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

Contar apariciones y ordenarlas en 2 tablas

Estas en el tema de Contar apariciones y ordenarlas en 2 tablas en el foro de Mysql en Foros del Web. Buenas a todos los capos de MYSQL. Tengo un problema, y no he encontrado la manera de solucionarlo. Tengo 2 tablas, una de electores y ...
  #1 (permalink)  
Antiguo 27/11/2010, 23:12
 
Fecha de Ingreso: octubre-2003
Mensajes: 55
Antigüedad: 20 años, 7 meses
Puntos: 0
Pregunta Contar apariciones y ordenarlas en 2 tablas

Buenas a todos los capos de MYSQL.

Tengo un problema, y no he encontrado la manera de solucionarlo. Tengo 2 tablas, una de electores y otra de encuestadores. Quiero contar a cuantos electores a encuestado un encuestador y ordenar por numero de encuestas que ha hecho.

TABLAS:
electores:
elector_id = 1
elector_nombre = luis
elector_encuestador_id = 1

elector_id = 2
elector_nombre = pedro
elector_encuestador_id = 1

elector_id = 3
elector_nombre = jose
elector_encuestador_id = 2

encuestadores:
encuestador_id = 1
encuestador_nombre = juan

encuestador_id = 2
encuestador_nombre = pancho

Mi consulta es:
Código MySQL:
Ver original
  1. SELECT encuestadores.*, COUNT(electores.elector_encuestador_id)
  2. FROM encuestadores
  3. LEFT JOIN electores  ON(encuestadores.encuestador_id = electores.elector_encuestador_id)
  4. GROUP BY electores.elector_encuestador_id
  5. ORDER BY  electores.elector_encuestador_id DESC

y quiero obtener este resultado:

Código:
LISTA DE ENCUESTADORES 

id  nombre   encuestados
1   juan         2
2   pancho       1

Y ordenados por número de encuestados.

He conseguido contar las apariciones de la cantidad de electores encuestados por encuestador, con una subconsulta, pero al ordenarlas me ha sido imposible.

Muchas gracias a todos

Última edición por lordchile; 28/11/2010 a las 21:08 Razón: agregar consulta
  #2 (permalink)  
Antiguo 29/11/2010, 12:45
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Contar apariciones y ordenarlas en 2 tablas

Hola, pruebate con:
Código SQL:
Ver original
  1. SELECT  
  2.         E.Id,
  3.         E.Nombre,
  4.         COUNT(EE.Elector_encuestador_id) AS Encuestados
  5. FROM
  6.         Encuestador E INNER JOIN Electores EE
  7.         ON ( E.Id = EE.Elector_encuestador_id )
  8. ORDER BY E.Nombre

espero no me falte el group by. jejeje
Saludos.
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #3 (permalink)  
Antiguo 29/11/2010, 22:31
 
Fecha de Ingreso: octubre-2003
Mensajes: 55
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Contar apariciones y ordenarlas en 2 tablas

Gracias Snaft_J1,

Pero me sigue sin funcionar, me muestra 1 sólo registro con un acumulativo de todos los encuestadores....
Ahora quiero saber que significan esas E y EE de la consulta, porque a pesar de que llevo programando hace tiempo Mysql, no se que significan. Y no he encontrado referencias de ello en la documentación de Mysql.

Ssaludos y gracias
  #4 (permalink)  
Antiguo 30/11/2010, 00:06
 
Fecha de Ingreso: octubre-2003
Mensajes: 55
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Contar apariciones y ordenarlas en 2 tablas

Ya consegui mi consulta:

Para quienes le interese:

Código MySQL:
Ver original
  1. SELECT encuestadores.*, COUNT(elector_encuestador_id) AS encuestados
  2. FROM  encuestadores, electores WHERE encuestador_id = elector_encuestador_id
  3. GROUP BY elector_encuestador_id
  4. ORDER BY encuestados DESC

Saludos y gracias

Última edición por lordchile; 30/11/2010 a las 00:29
  #5 (permalink)  
Antiguo 30/11/2010, 08:03
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Contar apariciones y ordenarlas en 2 tablas

hola esa E es el alias de Encuestador y la EE es el alias de Electores no es documentacion especifica de mysql es teoria de SQL, los use para evitar lo que tu estas haciendo tener que estar escribiendo el nombe completo de la tabla.* y queda mas facil de leer.

ahora, de casualidad esa consulta no es igual a esta:
Código MySql:
Ver original
  1.         E.*,
  2.         Count(EE.Elector_encuestador_id) AS Encuestados
  3.         Encuestadores E INNER JOIN Electores EE
  4.         ON ( E.encuestador_id = EE.Elector_encuestador_id )
  5. GROUP BY EE.elector_encuestador_id
  6. ORDER BY E.Nombre

osea igual que la anterior pero con el group by.

espero haber explicado que eran la E y EE.

suerte.
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #6 (permalink)  
Antiguo 30/11/2010, 08:57
 
Fecha de Ingreso: octubre-2003
Mensajes: 55
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Contar apariciones y ordenarlas en 2 tablas

Hey muchas gracias por la explicación, estuve viendo una información de que se trataban los alias, pero no explicaban nada de como funcionaban.

Quedó todo mucho mas claro..

Gracias de nuevo por la ayuda.!

PD: ahora que todo funciona bien tengo una duda con la consulta, y tengo que hacer una pregunta:

Como mostrar a los encuestadores que tienen 0 (cero) encuestas?

Porque con esta consulta puedo visualizar el listado completo de encuestadores, hasta el que tiene 1 sola encuesta, pero no veo a los que tienen 0 encuestas.

SALUDOS!!

Última edición por lordchile; 30/11/2010 a las 10:39
  #7 (permalink)  
Antiguo 30/11/2010, 15:45
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Contar apariciones y ordenarlas en 2 tablas

ok, sale de horno.

jejeje.

Código MySQL:
Ver original
  1.         E.*,
  2.         Count(EE.Elector_encuestador_id) AS Encuestados
  3.         Encuestadores E LEFT JOIN Electores EE
  4.         ON ( E.encuestador_id = EE.Elector_encuestador_id )
  5. WHERE ( EE.Elector_encuestador_id is null )
  6. GROUP BY EE.elector_encuestador_id
  7. ORDER BY E.Nombre

en este caso se dice que necesitas todos los que esten en una entidad pero que no esten en la otra, para ellos usas LEFT JOIN o RIGHT JOIN, todo dependiente de la posicion de la tabla que te interesa, por cierto vuelve y juega en grandes consultas pueden ocasionar lock (retenciones temporales).

Saludos.
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #8 (permalink)  
Antiguo 01/12/2010, 16:07
 
Fecha de Ingreso: octubre-2003
Mensajes: 55
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Contar apariciones y ordenarlas en 2 tablas

Muchas gracias!!!

Resolví otro detalle., porque he visto multitudes de soluciones para contar las 0 coincidencias, y todas son engorrosas, pero ninguna tan simple y clara como la tuya.

Saludos y gracias!
  #9 (permalink)  
Antiguo 01/12/2010, 16:27
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Contar apariciones y ordenarlas en 2 tablas

, jejeje, gracias por lo que me toca y de veras que fue un placer.


saludos y hasta la proxima coicidencia..
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....

Etiquetas: contar, tablas
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 09:28.