#sql
#sql
Вопрос:
Buy
имеет внешний ключ product_id
.
Итак, в дополнение к SELECT * FROM products;
нам интересно получить количество покупок у каждого продукта.
Ответ №1:
Что-то вроде:
SELECT p.*, COUNT(buy.product_id) FROM product p INNER JOIN buy ON buy.product_id = p.id GROUP BY buy.product_id
должно сработать.
Ответ №2:
Присоединиться
SELECT Products.*, COUNT(Buy.ID) AS Bought
FROM products
LEFT OUTER JOIN Buy ON products.ID = Buy.product_id
GROUP BY Buy.product_id
Подзапрос
SELECT
Products.*,
(SELECT COUNT(ID) FROM Buy WHERE product_id = Products.ID) AS Bought
FROM products
Комментарии:
1. Спасибо! Побочный вопрос: есть идеи о производительности между этими двумя?
2. Как и любой хороший ответ DB, это зависит. Обычно объединение будет лучшим выбором. Я бы попробовал их оба и посмотрел на план выполнения.
Ответ №3:
SELECT p.*,COUNT(b.product_id) FROM products p
INNER JOIN buy b ON p.id=b.product_id
GROUP BY b.product_id
Это все, что я могу предложить с информацией, которую вы опубликовали. Структура таблиц для обоих очень помогла бы, если вышеуказанное не сработает.
Комментарии:
1. Спасибо randomguy. Я исправил вышесказанное. К сожалению, не удалось протестировать.