Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/10/2015, 06:35
jonyjdv
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: duda con PHP y SQL

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Si tu pregunta, es si hacer 100 consultas en lugar de una sola y obtener registros, afecta la performance, la respuesta es SI.
Nadie hace cien consultas para obtener un único registro, si puede obtener los 100 de una sola vez, no es sensato, consume recursos de red, genera tráfico innecesario, consume la cuota del buffer de consultas, y genera demasiado overhead en el sistema por exceso de cambio de contexto.
Eso que te parece "lo más lógico" es algo totalmente ineficiente.
Pro lo pronto, lo que dices necesitar es:

Lo que haces es sencillamente dos consultas:
Código SQL:
Ver original
  1. SELECT COUNT(*) seguidores
  2. FROM miembros_amigos
  3. WHERE id_miembro IN(/* aqui va  la lista de IDs de miembros, separada por comas*/)
  4.    AND /* aqui va el resto de las condiciones */;
y por otro lado:
Código SQL:
Ver original
  1. SELECT id_seguidores
  2. FROM miembros_amigos
  3. WHERE id_miembro IN(/* aqui va  la lista de IDs de miembros, separada por comas*/)
  4. ORDER BY id_miembro /* para que salgan en orden de seguidos y puedas procesarlos en PHP */;
El como lo proceses luego en PHP lo deberás consultar en el foro de PHP.
Hola, gracias por responder, era justo lo que buscaba, en una consulta poder contar los registros (seguidores) que pertenecen a un ID, sin embargo el codigo que me escribiste cuenta el total, y necesito algo como por ejemplo, el ID 4 tiene 20 registros, el ID 8 tiene 5 registros, no que me dea 25.
Código SQL:
Ver original
  1. SELECT COUNT(*) seguidores
  2. FROM miembros_amigos
  3. WHERE id_miembro IN(4,8)

Gracias un saludo

[EDITO]
lo solucione de la siguiente manera:
Código SQL:
Ver original
  1. SELECT COUNT(*) `contador`,`seguidores` FROM `miembros_amigos` GROUP BY `seguidores`
¿Sería una solucion correcta?

Saludos

Última edición por jonyjdv; 10/10/2015 a las 07:05