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.