2011-08-09 11 views
1

上記は私のクエリですが、observer_IDとstaff_IDの対応する名前はstaffという別のテーブルにあります。それで、オブザーバーと観測されている人の2つの名前(o.staff_ID)を取得するにはどうすればいいですか(o.observer_ID = s.staff_ID)AND(o.staff_ID = s.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' 

は、それが動作するかどうかを教えてください(と、手動でいくつかの値を確認してください)。