2012-03-25 2 views
0

나는 2 개의 테이블을 가지고 있습니다.2 테이블의 최적화 된 쿼리

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

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

이제 각 식당에는 1 개 이상의 검사가 있습니다. 그래서 내가하고 싶은 일은 모든 레스토랑을 나열하고 최신 inspection_result를 보여주는 것입니다.

1 개의 쿼리에서이 작업을 수행 할 수 있으며 결과 집합에 각 검사마다 1 개의 행이 포함되지 않습니까?

가 이상적으로 각 반환 된 행이 같은 것을 포함됩니다 :

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

글쎄, 난이 하나 개의 문장으로 수행하는 방법을 모른다. 내가 지금까지 시도한 것은 이것이다 : restaurant.id를 restId로 선택하고, restaurant.name을 restName으로 레스토랑에서, inspection 어디에서 restaurant.id = inspection.restaurantid로 가져 가라. 3 번 검사가 있으면 각 검사마다 1 행을 얻습니다. – Trj

답변

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

상위 1 개는 TSQL이 아니고 SQLite는 아니요, 아니요? –

+0

감사합니다. sqllite 태그가 표시되지 않았습니다. – Diego

+0

고마워요! 그 트릭을 했어 :) – Trj