Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

duda con PHP y SQL

Estas en el tema de duda con PHP y SQL en el foro de Mysql en Foros del Web. Hola a todos, pese a que soy novato en esto de la programacion con lo poco que se he hecho una red social con funciones ...
  #1 (permalink)  
Antiguo 10/10/2015, 05:16
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 9 años, 9 meses
Puntos: 1
duda con PHP y SQL

Hola a todos, pese a que soy novato en esto de la programacion con lo poco que se he hecho una red social con funciones básicas, el caso es que quiero contar cuantos seguidores tiene varios usuarios que cumplen una condicion especifica, saco los ID y lo coloco en un array de PHP

Lo mas lógico (creo) es hacer un bucle e ir haciendo una consulta con "select count" y le voy poniendo el ID de cada persona aquí surje mi duda. ¿le afecta mucho al rendimiento hacer esto? ya que con 10 usuarios esa tabla podrá alcanzar 100 registros, y aunque no tiene mucho que ver probablemente con la categoría de PHP usar "select count" afecta a la seguridad de mi sitio??

Gracias saludos
  #2 (permalink)  
Antiguo 10/10/2015, 05:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: duda con PHP y SQL

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:
Cita:
quiero contar cuantos seguidores tiene varios usuarios que cumplen una condicion especifica, saco los ID
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.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 10/10/2015, 06:35
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 9 años, 9 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

Etiquetas: php, select, sql, tabla, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:38.