Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/12/2003, 08:13
josemi
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 7 meses
Puntos: 16
Hola,

Prueba con:

select
tabla_1.id as id,
tabla_1.texto as texto,
count(DISTINCT tabla_2.id) as registros_t2,
count(DISTINCT tabla_3.id) as registros_t3
from
tabla_1
left join
tabla_2
on
tabla_1.id = tabla_2.id_tabla_1
left join
tabla_3
on
tabla_1.id = tabla_3.id_tabla_1
group by
tabla_1.id
order by
tabla_1.id

Creo que verias por que fallabas si intentas ver el resultado de la consulta en la que intentabas realizar el join:

select
tabla_1.id as id,
tabla_1.texto as texto,
tabla_2.id,
tabla_3.id
from
tabla_1
left join
tabla_2
on
tabla_1.id = tabla_2.id_tabla_1
left join
tabla_3
on
tabla_1.id = tabla_3.id_tabla_1
group by
tabla_1.id
order by
tabla_1.id

Visualiza el resultado de esta consulta (en el mismo phpMyAdmin). Veras que se repiten los id de tabla3. Eso es porque estas combinando el resultado de esta consulta:

select
tabla_1.id as id,
tabla_1.texto as texto,
tabla_2.id
from
tabla_1
left join
tabla_2
on
tabla_1.id = tabla_2.id_tabla_1
group by
tabla_1.id
order by
tabla_1.id

con tabla3.

Con count(DISTINCT) (http://www.mysql.com/doc/en/GROUP-BY-Functions.html) lo que hace es contar el numero de valores no repetidos (y distintos de NULL) de la columna.

Saludos.

PD: No se si esta sintaxis es especifica de alguna version de MySQL. Pruebala y nos cuentas.
__________________
Josemi

Aprendiz de mucho, maestro de poco.