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

Contar un valor con una doble coincidencia

Estas en el tema de Contar un valor con una doble coincidencia en el foro de Mysql en Foros del Web. Estas 2 lineas son solo referencia a lo que deberia tener el query: SELECT * FROM tabla1 AS t1 RIGHT JOIN tabla2 AS t2 ON ...
  #1 (permalink)  
Antiguo 29/01/2012, 10:52
 
Fecha de Ingreso: mayo-2011
Mensajes: 25
Antigüedad: 12 años, 10 meses
Puntos: 1
Contar un valor con una doble coincidencia

Estas 2 lineas son solo referencia a lo que deberia tener el query:
SELECT * FROM tabla1 AS t1 RIGHT JOIN tabla2 AS t2
ON t1.id=t2.id WHERE t1.parent_id=0 => esto es el join Es decir todos los tabla1.id del 1 al 4.

IFNULL(COUNT(t3.service),0) =>esto hace que me devuelva 0 en lugar de NULL asi puedo contar los valores inclusive los 0

Necesito añadir un valor que es una suma en tabla3

Esto es lo que necesito ademas del join entre tabla1 y tabla 2 que no es mayor problema . Sumar todos los tabla3.service donde tabla3.service = (tabla1.srt_order=tabla1.parent_id) es decir para el tabla1.id = 1 debera sumar tabla3.service = 5 y 6 (tiene el "parent_id = 1" que es el sort_order de "tabla1.id = 1")

tabla1
id parent_id srt_order
1---- 0 ------------1
2 ----0 ------------2
3 ----0 ------------3
4 ----0------------ 4
5 ----1 ------------0
6 ----1 ------------0
7 ----2 ------------0
8---- 3 ------------0
9 ----3 ------------0
10 ---4 ----------- 0

tabla2
id descr other
1 ---0 -----1
2 ---0 -----2
3 ---0----- 3
4 ---0 -----4

tabla 3
id service
1 ---5
2 ---5
3 ---6
4 ---6
5 ---7
6 ---8

Ejemplo
El primer y seg valor devuelto deberia ser :
id parent_id srt_order descr COUNT(service)
1---- 0 -------1---------- 0 --------4
2 ----0 -------2 ----------0 --------1

este query me suma todos los service sin diferenciarlos por t1.parent_id ni t1.srt_order:
"SELECT t1.*,t2.*, IFNULL(COUNT(t3.service),0) AS count FROM tabla3 AS t3 , tabla1 AS t1 RIGHT JOIN tabla2 AS t2
ON t1.id = t2.id WHERE t1.parent_id=0 GROUP BY t1.id"
y este otro me devuelve "count" correcto , unido solo tabla1 y tabla3
"SELECT t1.*, IFNULL(COUNT(t2.service_categorie),0) AS count
FROM tabla1 AS t1 LEFT JOIN tabla3 AS t3 ON t1.id = t3.service
WHERE t1.srt_order=0 GROUP BY t1.parent_id"
MI problema diria es una cuestion de sintaxis y union entre ambos querys
Muchas gracias por la ayuda

Última edición por mikexloo; 29/01/2012 a las 17:50
  #2 (permalink)  
Antiguo 03/02/2012, 05:33
 
Fecha de Ingreso: mayo-2011
Mensajes: 25
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Contar un valor con una doble coincidencia

This does it Thank you
table1 = t1 , table2=t2, table3=t3 , t11 = table1 rejoined
"SELECT t1.id
, t1.parent_id
, t1.srt_order
, t2.desc,t2.other,
, COUNT(t3.id) AS Count
FROM t1
INNER JOIN t1 AS t11 ON t11.parent_id = t1.id
INNER JOIN t2 ON t2.id = t1.id
LEFT OUTER JOIN t3 ON t3.service = t11.id
GROUP BY
t1.id
, t1.parent_id
, t1.srt_order
, t2.desc"

Etiquetas: doble, join, query, 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 16:40.