2010-03-27 22 views
5

Por favor, mire esta imagenMySQL unirse a 3 mesas y contar

alt text http://img249.imageshack.us/img249/6453/pic1v.jpg

aquí es de 3 mesas, y fuera lo que quiero es

UID de tabla1 industria del cuadro 3 del mismo UID recuento de fid de la tabla 2 del mismo uid

como en la muestra, ejemplo de salida serán 2 registros

Gracias

+0

¿Qué has hecho hasta ahora y cuál es el problema con tu intento actual? – Yacoby

+0

intento muchos enunciados sql pero no puedo hacer que funcionen. intento join, inner jon etc. también busco en internet pero no recibí ninguna respuesta. – air

Respuesta

5

no veo ninguna relación con la tabla 1. Aquí hay un ejemplo usando una combinación interna entre las dos tablas y agrupación por el fluido:

SELECT 
    t3.uid, 
    t3.industry, 
    count(t2.fid) 
FROM 
    table3 t3 
INNER JOIN 
    table2 t2 ON t3.uid = t2.uid 
GROUP BY 
    t3.uid 
+0

Estoy de acuerdo con esta respuesta, no es necesario que se una a la tabla 1 aquí. puede usar t3.uid y t2.uid para unirse a ellos, y obtener toda la información requerida. – Faisal

+2

aunque, en general, estoy de acuerdo con la respuesta, JOIN adicional podría tener el efecto de filtrar las filas para las que UID no está en Table1. Además, para que la consulta mostrada sea correcta, group by debería contener 't3.insdustry' también – van

4

Pruebe con esto:

SELECT table1.uid,table3.industry,COUNT(table2.fid) 
FROM table1 
INNER JOIN table3 ON table1.uid=table3.uid 
INNER JOIN table2 ON table1.uid=table2.uid 
GROUP BY table1.uid, table3.industry 

La unión interna Table1 es inútil, pero podría ser útil si necesita recuperar city o mem_no; en este caso, recuerde agregar el campo también en la cláusula GROUP BY.