sql запросов бок о бок - PullRequest
       0

sql запросов бок о бок

0 голосов
/ 07 января 2020

Предположим, у меня есть база данных отзывов, и я хочу посмотреть, у скольких есть слово «любовь», а у многих - слово «ненависть». Легко, peasy, верно:

Select * from 
(select count(*) from review where text like '%love%' ) as loves,
(select count(*) from review where text like '%hate%') as hates 

Проблема в том, что имена столбцов в результате запроса являются 'count (*)', и я не могу понять, как это исправить (я новый для SQL, так что это, вероятно, тривиально). Я использую sqlite.

Ответы [ 2 ]

3 голосов
/ 07 января 2020

Для этого вам не нужны подзапросы:

select sum(text like '%love%') as loves,
       sum(text like '%hate%') as hates
from review  

Демоверсия SQLFiddle

1 голос
/ 07 января 2020

Ваш запрос правильный. Но вы хотели бы использовать псевдонимы для столбцов, чтобы различать guish два значения. Более того, в 1992 году в стандарте SQL избыточные объединения были разделены запятыми. Вместо этого используйте явные объединения, в вашем случае a CROSS JOIN.

select * 
from (select count(*) as love_count from review where text like '%love%' ) as loves
cross join (select count(*) as hate_count from review where text like '%hate%') as hates;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...