外似乎沒有聯接工作,我是否使用左外連接或右外連接:問題,我的右外MYSQL中加入
SELECT * FROM `event_orchestra_musicians` eom
right outer join `orchestra_instruments` oi on eom.instrument_id = oi.oi_id
where event_id = 2
order by instrument_id
Orchestra_instruments包含一個唯一的ID,即不同的樂器:
- 小提琴
- 中提琴
- 豎琴
- 短笛 個
Event_Orchestra_Musicians是一個查找表加入音樂家的儀器,即:
musician_id, instrument_id, event_id,
1 1 2
2 1 2
3 3 2
4 2 2
當我做任何外連接,使用這些表中的數據,我會得到一個內部的結果加入(短笛不會出現一個空的musician_id,它根本不會出現)。有什麼我做錯了嗎?
編輯:
所以我做了一些胡鬧左右。這個問題似乎是因爲在events_orchestra_musicians表中有一個event_id爲5且instrument_id爲7的記錄。如果我刪除該記錄,則外連接將起作用。我沒有得到的是,如果該記錄存在,我使用where子句查找event_id = 2,如果其中的event_id爲5的instrument_id爲7,那麼爲什麼它存在記錄?
唯一必要的改變是'eom.event_id是null'部分。在他的發言中,他只要求'event_id = 2',但如果沒有匹配的音樂家,event_id顯然不是2,而是無效,因此該樂器不會返回。 – 2012-02-03 16:35:14
感謝您的快速回復,我已經嘗試切換基表並且它沒有任何作用。我已經在where子句中複製了帶有和沒有null event_id的代碼,它仍然充當內部聯接,不顯示任何空值或帶過短笛。 – user1143767 2012-02-03 16:39:18
@ user1143767:請顯示您現在實際使用的聲明。 Fosco提供的聲明應該有效。 – 2012-02-03 16:41:31