Я создаю простой магазин, но столкнулся с простой проблемой ..
У меня есть две таблицы, одна называется shop
, а другая shop_orders
. shop
имеет ширину продуктов, а id
, shop_orders
имеет product_id
, к которой он привязан к таблице shop
и amount
элементов в этом порядке.
Я хочу отфильтровать элементы в таблице shop
по наиболее продаваемым позициям, поэтому я хочу отсортировать таблицу shop
по сумме amount
с shop_orders.product_id = shop.id
.
У меня следующий запрос:
SELECT shop.*,
SUM(shop_orders.amount) as sold
FROM shop
LEFT JOIN shop_orders ON (shop_orders.product_id = shop.id)
Но он возвращает только все предметы, которые есть в таблице shop_orders, но я хочу все предметы, даже если они еще не проданы.
Я пытался использовать:
SELECT shop.*,
SUM(shop_orders.amount) as sold
FROM shop
LEFT JOIN shop_orders ON (shop_orders.product_id = shop.id)
WHERE shop_orders.product_id IS NULL
Ведьма возвращает все предметы, которые еще не были проданы. Но если я попытаюсь использовать:
SELECT shop.*,
SUM(shop_orders.amount) as sold
FROM shop
LEFT JOIN shop_orders ON (shop_orders.product_id = shop.id)
WHERE (shop_orders.product_id IS NULL || shop_order.product_id NOT IS NULL)
ничего не возвращает. Как я могу заставить этот запрос работать так, чтобы все элементы в таблице shop
возвращались со строкой под названием sold
, ведьма подсчитывает это shop_order.amount
для этого product_id
вместе, чтобы я мог отсортировать по этому.