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

Listar tabla ordenada dependiendo a los datos de otra tabla

Estas en el tema de Listar tabla ordenada dependiendo a los datos de otra tabla en el foro de Mysql en Foros del Web. Hola amigos busco realizar una consulta que me muestre un listado de empresas y que se ordenen por las que mejor calificaciones tienen. Ya he ...
  #1 (permalink)  
Antiguo 31/07/2017, 22:11
Avatar de ..::MaRcOs::..  
Fecha de Ingreso: diciembre-2006
Mensajes: 328
Antigüedad: 17 años, 11 meses
Puntos: 3
Listar tabla ordenada dependiendo a los datos de otra tabla

Hola amigos busco realizar una consulta que me muestre un listado de empresas y que se ordenen por las que mejor calificaciones tienen. Ya he logrado algo pero necesito una mano para perfeccionarla debido a que si la empresa aun no tiene calificación, no me la muestra.

empresas (id, nombre, categoria, activa, abierta)
calificaciones (id, empresa, puntaje)

la consulta que tengo es la siguiente:

SELECT empresas.nombre, SUM(calificaciones.puntaje)/COUNT(calificaciones.puntaje) as rating FROM `empresas`, `calificaciones` where empresas.id = calificaciones.empresa and empresas.activa = '1' and empresas.categoria = 'food' GROUP by empresas.id order by empresas.abierto DESC, rating DESC

la consulta arroja por ejemplo:

empresax 4,5
empresay 4,0

sin mostrar la empresa z que puede no tener calificaciones y lo que deseo es que me muestre algo como:

empresax 4,5
empresay 4,0
empresaz ---

les agradezco cualquier idea
  #2 (permalink)  
Antiguo 01/08/2017, 07:40
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Listar tabla ordenada dependiendo a los datos de otra tabla

Esa consulta la podrias sacar usando un left join, y bueno como consejo usa joins explicitos en lugar de joins implicitos

Código SQL:
Ver original
  1. SELECT empresas.nombre, SUM(calificaciones.puntaje)/COUNT(calificaciones.puntaje) AS rating FROM `empresas` AS t1
  2. LEFT JOIN `calificaciones` AS t2 ON (t1.id=t2.empresa)
  3. WHERE t2.activa = '1' AND t2.categoria = 'food'
  4. GROUP BY empresas.id ORDER BY empresas.abierto DESC, rating DESC
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: dependiendo, ordenada, order, select, tabla
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 17:50.