2011-09-11 61 views
0

所以我有三個表:聯接查詢問題,我想不出

Table Place: _id autoincrement not null primary key, name TEXT,place TEXT 
Table Food: _id autoincrement not null primary key, food TEXT 
Table Person: _id autoincrement not null primary key, personName TEXT, PLACE_ID INTEGER NOT NULL, FOOD_ID INTEGER 

我想拉但是所有的食物和地點信息,如人表指出,有可能是一個空FOOD_ID的值。假設數據庫完全正確填充。我如何查詢?我試過以下查詢:

select * from Person,Food,Place where Place._id = Person.PLACE_ID and if not null Person.Food_id Food._id = Person.FOOD_ID 

但這並不奏效!

任何幫助將不勝感激!

謝謝! 喬恩

回答

1
SELECT * 
FROM Person p 
INNER JOIN Place pl 
    ON p.PLACE_ID = pl._id 
LEFT OUTER JOIN Food f 
    ON p.FOOD_ID = f._id 

記住,LEFT OUTER JOIN返回左表(在這種情況下,人)的所有行,即使有右表中沒有匹配行。右側表的值將全部爲NULL。

+0

以及如果我們只想選擇其人稱Jon的人的姓名? – Jon

+0

沒關係,我明白了!再次感謝! – Jon