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

Left join con condicion de tercera tabla

Estas en el tema de Left join con condicion de tercera tabla en el foro de Mysql en Foros del Web. Hola ojala alguien pueda orientarme, estoy tratando de hacer una consulta left join, pero necesito que muestre el resultado dependiendo de una tercera tabla esta ...
  #1 (permalink)  
Antiguo 31/01/2014, 18:25
 
Fecha de Ingreso: mayo-2013
Mensajes: 16
Antigüedad: 11 años, 7 meses
Puntos: 0
Left join con condicion de tercera tabla

Hola ojala alguien pueda orientarme, estoy tratando de hacer una consulta left join, pero necesito que muestre el resultado dependiendo de una tercera tabla
esta es mi consulta pero asi solo muestra las coincidencias

SELECT A.IDA, R.ACTO, A.sec, A.nombre, IFNULL( Count( R.acto ) , 0 ) , IFNULL( sum( R.monto ) , 0 ) FROM (actos A, tabla S)LEFT JOIN (rep R) ON A.ida = R.acto WHERE (A.sec = 'uno') AND S.fecha BETWEEN '2014-01-01' AND '2014-01-31' and s.key=r.rey GROUP BY nombre

lo muestra asi:
nombre count(acto) sum(monto)
nombre1 2 100
nombre2 1 50

y lo que yo quiero es que muestre todo el contenido de la tabla

nombre count(acto) sum(monto)
nombre1 2 100
nombre2 1 50
nombre3 0 0
nombre4 10 20
.
.
.
.
nombre100 0 0

Bueno ojala me haya explicado...
Y gracias anticipadas..
  #2 (permalink)  
Antiguo 01/02/2014, 12:29
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Left join con condicion de tercera tabla

No puedes mezclar las dos sintaxis de relacion de tablas o usas JOIN ...ON o no lo usas.

Código MySQL:
Ver original
  1. SELECT A.IDA,
  2.             R.ACTO,
  3.             A.sec,
  4.             A.nombre,
  5.             IFNULL( Count( R.acto ) , 0 ) ,
  6.             IFNULL( sum( R.monto ) , 0 )
  7. FROM (actos A LEFT JOIN rep R ON A.ida = R.acto)
  8.            ??? JOIN tabla S ON s.key=r.rey
  9. WHERE A.sec = 'uno'
  10.        AND S.fecha BETWEEN '2014-01-01' AND '2014-01-31'
  11. GROUP BY ?.nombre;

Fijate en los interrogantes falta definir el tipo de join con "tabla S"

??? JOIN tabla S ON s.key=r.rey

y el alias de la tabla de nombre

GROUP BY ?.nombre

Ojo con los cambios entre mayúsculas y minúsculas...especialmente en los alias.

Tampoco es recomendable usar palabras del lenguaje como nombres de campos.

JOIN tabla S ON s.key=r.rey
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 01/02/2014 a las 12:34
  #3 (permalink)  
Antiguo 02/02/2014, 14:59
 
Fecha de Ingreso: mayo-2013
Mensajes: 16
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Left join con condicion de tercera tabla

hola gracias por contestar
he modificado la consulta asi:

Código SQL:
Ver original
  1. SELECT A.IDA, R.ACTO, A.sec, A.nombrea, IFNULL( COUNT( R.acto ) , 0 ) , IFNULL( SUM( R.monto ) , 0 )
  2. FROM (actos A LEFT JOIN repactos R ON A.ida = R.acto) INNER JOIN sunoinsc S ON S.llave=R.llave
  3. WHERE A.sec = 'SEGUNDA' AND S.finscrip BETWEEN '2014-01-01' AND '2014-01-31' GROUP BY A.nombrea

pero asi solo me lista las conincidencias del JOIN S.LLAVE=R.LLAVE Y lo que necesito es que se listen todos los nombres de la tabla acto

alguna sugerencia??.. o no es posible hacer esa consulta

Gracias de antemano

Última edición por gnzsoloyo; 02/02/2014 a las 18:50
  #4 (permalink)  
Antiguo 03/02/2014, 01:55
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Left join con condicion de tercera tabla

Código MySQL:
Ver original
  1. SELECT A.IDA, R.ACTO, A.sec, A.nombrea, IFNULL( COUNT( R.acto ) , 0 ) , IFNULL( SUM( R.monto ) , 0 )
  2. FROM (actos A LEFT JOIN repactos R ON A.ida = R.acto) LEFT JOIN sunoinsc S ON S.llave=R.llave
  3. WHERE A.sec = 'SEGUNDA' AND S.finscrip BETWEEN '2014-01-01' AND '2014-01-31' GROUP BY A.nombrea;

Usa otra vez LEFT JOIN
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: join, left, null, 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 00:58.