2011-07-30 20 views
2

我有3個表:不要在MySQL Query中強制執行其中一個條件。

**people** 
ID First Last Email  WageID ShiftID 
1 john Smith [email protected] 2  3 
2 sara doe [email protected] 1   <----- no number 



**wages** 
ID Wage 
1 300 
2 500 
3 800 



**shifts** 
ID Shift 
1 day 
2 night 
3 half 

我需要做一個查詢從所有表 獲取信息,我有:

SELECT people.ID people.First people.Last people.Email wages.Wage, shifts.Shift 
FROM people, wages, shifts 
WHERE people.wageID = wages.ID 
AND people.shiftID = shifts.ID 

問題是,由於「薩拉·多伊」沒有移ID指定它不顯示她我認爲,因爲最後一個選擇查詢是否有辦法讓工作查詢顯示所有人沒有改變表?

如果我嘗試OR people.shiftID = shifts.ID它仍然沒有顯示她的

回答

3

你應該使用OUTER JOIN這個

SELECT people.ID, people.First, people.Last, people.Email, wages.Wage, 
shifts.Shift FROM people 
JOIN wages ON people.wageID = wages.ID 
OUTER JOIN shifts ON people.shiftID = shifts.ID 
+0

感謝, 在line JOIN工資on people.wageID = salary.IDAND你忘了OUTER或者ho它應該是? – BUddhaxx

+0

它不會被遺忘,它只是一種不同類型的JOIN(INNER JOIN)。並從salary.IDAND中刪除「AND」。 –

+0

你能解釋爲什麼我們需要使用內部連接而不是外部連接嗎? – BUddhaxx

0

你應該使用一些左聯接

select people.ID people.First people.Last people.Email wages.Wage, shifts.Shift 
from people 
    left join wages on wages.ID = people.WageID 
    left join shifts on shifts.ID = people.ShiftID