| |||
| 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 16:50 |
| |||
| 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" |