2016-04-07 18 views
1

Ich habe die folgenden Tabellen mit den folgenden Spalten: Mehr in http://sqlfiddle.com/#!2/8776a0/2Join mehr als vier Tabellen in SQL

request : {id,request_id, client_id, product_name, designation_date_1, can } 
assigned_samples:{id,labref, user_id, stat} 
users{id, fname, lname} 
clients:{id, name} 
tracking_table{labref, activity, added_date} 

Was würde ich alles tun, diese Tabellen wird kommen und kommen mit einem großen Tisch alle enthalten die Daten, wenn sie mit Nachverfolgungstabelle Verbindung, die Bedingung ist, wenn Aktivitätsspalte zu prüfen hat gegebenen Wert wie „a“, wenn eine passende Zeile nicht gefunden wird, sollte die DATE_ADDED null sein sonst zeigen die DATE_ADDED

result table {labref, prod, desc_date, can, CONCAT(fname,' ',lname), date_added} 

SELECT r.request_id, r.product_name, r.can, r.designation_date_1, CONCAT(u.fname,' ', u.lname) as analyst, a_s.stat 
FROM request r, assigned_samples a_s, user u, clients c 
WHERE r.client_id=c.id 
AND a_s.analyst_id = u.id 
AND r.request_id = a_s.labref 
AND r.client_id='2' 
GROUP BY r.request_id 

ich f i fügen Sie die Abfrage eine Bedingung, gibt sie die Daten, aber die DATE_ADDED ist egal, was falsch ist

SELECT r.request_id, r.product_name, r.can, r.designation_date_1, CONCAT(u.fname,' ', u.lname) as analyst, a_s.stat 
FROM request r, assigned_samples a_s, user u, clients c, tracking_table t 
WHERE r.client_id=c.id 
AND a_s.analyst_id = u.id 
AND r.request_id = a_s.labref 
AND t.activity ='Authorizing COA Release' 
AND r.client_id='2' 
GROUP BY r.request_id 
+0

Sie müssen beitreten eine Außen verwenden (links oder rechts), um alle Datensätze aus einer Tabelle und die übereinstimmenden von einem anderen zu erhalten. Aber ich verstehe nicht, warum Sie group by verwenden, wenn Sie keine Aggregatfunktion wie sum() verwenden und nur ein einzelnes Feld in der Liste gruppieren nach auflisten. – Shadow

Antwort

1

join condition sollte tracking_table hinzugefügt werden.

Versuchen Sie folgendes:

SQLFiddle: http://sqlfiddle.com/#!2/3a116f/1

(ich leicht die Eingangsdaten für Demo geändert)

SELECT r.request_id, r.product_name, r.can, r.designation_date_1, CONCAT(u.fname,' ', u.lname) as analyst, a_s.stat, 
    date_added 
FROM request r, assigned_samples a_s, user u, clients c, tracking_table t 
WHERE r.client_id=c.id 
AND a_s.analyst_id = u.id 
AND r.request_id = a_s.labref 
AND r.client_id='2' 
AND r.request_id = t.labref 
AND t.activity ='Authorizing COA Release'