2011-07-30 16 views
2

私は3つのテーブルを持っている:MySQL Queryの条件の1つを強制しないでください。

すべてのテーブル から情報を取得するために私は1つのクエリを作成する必要があり
**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 

問題は、「サラDOEは」シフトを持っていないためということですIDを指定しないと彼女のことは表示されません。最後に選択したクエリのように、テーブルを変更せずにすべての人を表示する作業クエリを作成する方法があると思いますか?

私はOR people.shiftID = shifts.IDをしようとした場合、それはまだ彼女

答えて

3

あなたは、いくつかの左がに参加する使用する必要があります。この

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

おかげで、で JOINは、people.wageID = wages.IDANDで賃金を払っています。あなたはOUTERまたはそのHOを忘れています。そうなっていたの? – BUddhaxx

+0

それは忘れられていない、ちょうど別のタイプのJOIN(INNER JOIN)です。そして、賃金から "AND"を取り除いてください.IDAND。 –

+0

アウターではなく内部結合を使用する必要がある理由を説明できますか? – BUddhaxx

0

ためOUTER JOINを使用する必要がありますを示していけない:

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 
関連する問題