SQL: завершить выбор с другим выбором в том же запросе - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь добавить новые данные в старый выбор, но данные, которые мне нужны, похожи на количество строк в другой таблице

Я пытался использовать двойной выбор с количеством в первом (см. Запрос ниже), это может быть не лучшим вариантом. Я действительно не знаю. если у кого-то есть идея! : Р

Итак, я хочу добавить к своему старому запросу столбец типа «считать лайков», где мы видим, сколько лайков получит элемент (см. Изображение БД ниже).

Спасибо, ребята, что читаете и помогаете мне:)

Мой старый запрос:

SELECT image_item.link, image_item.alt, item.id, item.name, item.short_description, item.publish_date FROM item, image_item WHERE item.image = image_item.id ORDER BY publish_date desc limit 3

Мой фактический запрос:

SELECT image_item.link, image_item.alt, item.id, item.name, item.short_description, item.publish_date, count(like_system.item)
FROM item, image_item, like_system
WHERE like_system.item = item.id AND item.image = image_item.id
AND like_system.item = (
SELECT item from like_system, item WHERE like_system.item = item.id AND item = item.id
)

моя модель БД: https://imgur.com/TjjINQR

Я получил эту ошибку:

#1140 - In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'urbexblog.image_item.link'; this is incompatible with sql_mode=only_full_group_by

1 Ответ

1 голос
/ 26 марта 2019

При агрегировании некоторых данных вы должны использовать предложение group by:

SELECT 
image_item.link,
image_item.alt, 
item.id, 
item.name, 
item.short_description, 
item.publish_date, 
SUM(NVL2(like_system.item,1,0)) as likes_count
FROM item 
 INNER JOIN image_item
    ON item.image = image_item.id
 LEFT JOIN like_system
    ON like_system.item = item.id
GROUP BY
image_item.link,
image_item.alt, 
item.id, 
item.name, 
item.short_description, 
item.publish_date
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...