Mysql Присоединиться, Сумма, Имея, Группировать по. Не могу понять это - PullRequest
0 голосов
/ 28 февраля 2012

У меня проблема с mysql при выполнении соединения двух таблиц и фильтрации с использованием HAVING для этих двух таблиц.

Предположим, мои таблицы выглядят так:

Продукты:

id | Name
1  | Product 1
2  | Product 2
3  | Product 3

Оценка:

Name     | Product_id | score
Review 1 | 1          | 10000

Моим лучшим предположением было следующее, но оно не работает:

SELECT "products".*, sum("reviews".score) FROM "products" INNER JOIN "reviews" ON "reviews"."empire_id" = "products"."id" GROUP BY products.id HAVING sum("reviews".score)=0;

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

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

Звучит так, будто вы хотите, чтобы товары отображались в таблице «продукты», а не в таблице «отзывы».Возможно, взгляните на SQL - найдите записи из одной таблицы, которых нет в другой ?

В качестве альтернативы, замена INNER JOIN на LEFT JOIN может работать.

0 голосов
/ 28 февраля 2012
SELECT products.id, products.name, sum("reviews".score)
FROM products
LEFT JOIN reviews ON reviews.product_id = products.id
GROUP BY products.id, products.name
HAVING sum(reviews.score)=0;

"reviews". "Empire_id" = "products". "Id"

Должны быть "reviews". "Product_id" = "products". "Id"

На самом деле ваша группа должна иметь все ваше имя поля из продукта

...