2015-10-06 64 views
0

因此,我有三個表。重命名內部聯接並將其用於隨後的內部聯接

1) business: 
-> id   (varchar) id of business 
-> name   (varchar) name of business 

2) review: 
-> business_id (varchar) id of reviewed business 
-> user_id  (varchar) id of user who reviewed 

3) user: 
-> id   (varchar) id of user 
-> name   (varchar) name of user 
-> review_count (int)  number of reviews written by the user 

我想寫提取business.id S和business.name S作被誰寫了超過10條的用戶評論這些企業的查詢。

我想過在userreview上做內部連接的條件user.id = review.user_id其中user.id in (select id from user where review_count > 10)。在選擇僅屬於寫入超過10條評論的用戶的user.id之後,這將在上述表格中執行內部連接。接下來,我希望在此新表和business表上執行內部聯接,條件是business.id = new_table.business_id,其中new_table是通過對審閱和用戶執行先前的內部聯接而獲得的表。

我知道我的重命名語法可能有問題。

我收到語法錯誤:Error: near "where": syntax error。我正在使用sqlite3。

這是我到目前爲止。

select business.id, business.name 
from business inner join 
(     
review inner join user 
on review.user_id = user.id 
where user.id in (
select id 
from user 
where review_count > 10) 
) as R 
on R.business_id = business.id; 

回答

1

下面的查詢應該是一樣的你正在嘗試做的。

select business.id, business.name 
from business     
inner join review on review.business_id = business.id 
inner join user on user.id = review.user_id 
where user.review_count > 10 
+0

謝謝,但review沒有review_count列。所以我不確定review.review_count> 10是否可行。我已經修復了我的問題陳述 – tofu

+0

,如果我們只刪除和「review.review_count> 10」並將其放在下一行的末尾,它似乎工作。 – tofu

+0

我的意思是,如果只是我們刪除和「review.review_count> 10」,將其更改爲「和user.review_count> 10」並將其追加到最後一行,它似乎工作 – tofu