2010-03-27 25 views
5

Betrachten Sie bitte dieses Bildmysql 3 Tabellen verbinden und zählen

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

hier 3 Tabellen, und ich will aus ist

uid aus table1 Industrie aus Tabelle 3 von gleicher uid Zahl von fid aus Tabelle 2 der gleichen uid

wie im Beispiel Beispiel Ausgabe wird 2 Datensätze sein

Dank

+0

Was hast du bisher gemacht und was ist das Problem mit deinem aktuellen Versuch? – Yacoby

+0

Ich versuche viele SQL-Anweisung, aber sie können nicht funktionieren. ich probiere beitreten, innere jon etc ich suche auch im Internet, aber habe keine ans. – air

Antwort

5

Ich habe keine Beziehung mit Tabelle siehe 1. Hier ist ein Beispiel einer innere Verknüpfung zwischen den beiden Tabellen und Gruppierung durch die uid mit:

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

Ich stimme dieser Antwort zu, es besteht keine Notwendigkeit, Tabelle 1 hier zu verbinden. Sie können t3.uid und t2.uid verwenden, um sich ihnen anzuschließen und alle benötigten Informationen zu erhalten. – Faisal

+2

Obwohl ich generell mit der Antwort einverstanden bin, könnte ein zusätzlicher JOIN dazu führen, dass die Zeilen herausgefiltert werden, für die die UID nicht in der Tabelle1 enthalten ist. Damit die angezeigte Abfrage korrekt ist, sollte group by auch 't3.insdustry' enthalten – van

4

mit Try this:

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 

Table1 Inner Join ist nutzlos, aber könnte nützlich sein, wenn Sie Stadt oder mem_no abrufen müssen; Denken Sie in diesem Fall daran, das Feld auch in der GROUP BY-Klausel hinzuzufügen.