Преименуване на вътрешно съединение и използването му за последващо вътрешно съединение

Така че имам три маси.

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.ids и business.names на тези бизнеси, които са прегледани от онези потребители, които са написали повече от 10 отзива.

Мислех да направя вътрешно свързване на user и review при условие user.id = review.user_id където user.id in (select id from user where review_count > 10). Това ще изпълни вътрешно свързване на горните таблици след избиране само на онези user.id, които принадлежат на потребители, които са написали повече от 10 отзива. След това искам да изпълня вътрешно свързване на тази нова таблица и таблицата 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;

person tofu    schedule 06.10.2015    source източник


Отговори (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
person Vamsi Prabhala    schedule 06.10.2015
comment
Благодаря, но рецензията няма колона review_count. така че не съм сигурен дали review.review_count › 10 ще работи. Поправих изявлението си за проблем - person tofu; 06.10.2015
comment
само ако премахнем и review.review_count › 10 и го поставим в края на следващия ред, изглежда работи. - person tofu; 06.10.2015
comment
Имах предвид, че само ако премахнем и review.review_count › 10, променим го на и user.review_count › 10 и го добавим към последния ред, изглежда работи - person tofu; 06.10.2015
comment
сигурен..промени заявката, за да включи review_count в клаузата where - person Vamsi Prabhala; 06.10.2015