2012-03-25 42 views
0

我有2個表。2表的優化查詢

Restaurant 
------------------ 
id, name, address 

Inspection 
--------------------------------------------- 
id, result, date_of_inspection, restaurant_id 

現在每家餐廳都有一次或多次檢查。所以我想要做的就是列出所有餐廳並展示他們最新的檢查結果。

是否可以在1個查詢中做到這一點,並且每次檢查時結果集都不包含1行?

理想情況下每個返回行會包含這樣的事情:

Result row 
------------------------------------ 
restaurantid, name, address, result 
+0

好了,我不知道如何讓一個語句完成這件事。我到目前爲止嘗試的是這樣的:選擇restaurant.id作爲restId,restaurant.name作爲餐館的restName,檢查restaurant.id = inspection.restaurantntid。如果有3次檢查,每次檢查將得到1排。 – Trj 2012-03-25 12:44:44

回答

1

試試這個:

select r.id, r.name, r.address, 
    (select result from Inspection where restaurant_id = r.id order by date_of_inspection desc LIMIT 1) as result 
from Restaurant r 
+1

top 1是TSQL,而不是SQLite,不是? – 2012-03-25 12:47:15

+0

謝謝,我沒有看到sqllite標記。 – Diego 2012-03-25 12:49:57

+0

謝謝!這是做的伎倆:) – Trj 2012-03-25 13:00:21