2015-10-06 69 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