2011-08-09 113 views
1

上面是我的查詢...但observer_ID和staff_ID的對應名稱位於另一個名爲staff的表中。所以一些我需要加入(o.observer_ID = s.staff_ID)和(o.staff_ID = s.staff_ID)來獲得觀察者和被觀察者的兩個名字(o.staff_ID)。請幫助我。由於加入MYSQL查詢問題

SELECT DISTINCT o.Room, o.Date,o.Module_code,o.observer_ID,o.staff_ID,o.form_id 
FROM mbm2_db.observation_details as o,mbm2_db.Staff as s 
WHERE o.date = '2011-08-09' and o.Module_code = 'IS5103' 

回答

1
SELECT DISTINCT 
    o.Room, o.Date,o.Module_code,o.observer_ID,o.staff_ID,o.form_id, 
    s1.name, s2.name 
FROM 
    mbm2_db.observation_details AS o 
    LEFT JOIN mbm2_db.Staff AS s1 ON o.observer_ID = s1.staff_ID 
    LEFT JOIN mbm2_db.Staff AS s2 ON o.staff_ID = s2.staff_ID 
WHERE 
    o.date = '2011-08-09' AND o.Module_code = 'IS5103' 
0

也許內自連接:

SELECT DISTINCT o.Room, o.Date,o.Module_code, o.observer_ID, o.staff_ID, o.form_id 
FROM mbm2_db.observation_details As o 
JOIN mbm2_db.Staff As s ON o.staff_ID = s.staff_ID 
JOIN mbm2_db.Staff As b ON b.observer_ID = s.staff_ID 
WHERE o.date = '2011-08-09' and o.Module_code = 'IS5103'; 
0
SELECT DISTINCT o.Room, o.Date,o.Module_code,o.observer_ID,o.staff_ID,o.form_id 
FROM mbm2_db.observation_details o, mbm2_db.Staff s 
WHERE o.date = '2011-08-09' 
    AND o.Module_code = 'IS5103' 
    AND o.staff_ID=s.staff_ID 
    AND o.observer_ID=s.staff_ID 
+0

你可以簡化爲'o.staff_ID = o.observer_ID',它永遠不會是真的,因此0記錄。 – JMichelB

0
SELECT DISTINCT o.Room, o.Date, o.Module_code, o.observer_ID, o.staff_ID, o.form_id 
FROM (mbm2_db.observation_details AS o LEFT JOIN mbm2_db.Staff AS observer ON o.observer_ID = oberver.staff_ID) 
    LEFT JOIN mbm2_db.Staff AS observed ON o.staff_ID = observed.staff_ID 
WHERE o.date = '2011-08-09' and o.Module_code = 'IS5103' 

告訴我,如果它的工作原理(和手動檢查一些值)。