Така че имам три маси.
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 отзива.
Мислех да направя вътрешно свързване на 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;