привет всем, кого я хочу попросить о помощи для моего дела.
Первый основной продукт данных таблицы
id | barcode | product_name | unit_kg |
====+===============+======================+=========+===
1 | 8995157800257 | Pandan Wangi CF 5kg | 5 |
2 | 8995157800264 | Pandan Wangi CF 10kg | 10 |
3 | 8995157800271 | Pandan Wangi CF 20kg | 20 |
4 | 8995157800288 | Rojolele CF 5kg | 5 |
5 | 8995157800301 | Rojolele CF 20kg | 20 |
6 | 8995157800318 | SR CF 5kg | 5 |
7 | 8995157800325 | SR CF 10kg | 10 |
8 | 8995157800332 | SR CF 20kg | 20 |
Вторая таблица данных detail_order
id | barcode | product_name | pcs_order | date_order |
====+===============+======================+=========+==============+==
1 | 8995157800257 | Pandan Wangi CF 5kg | 5 | 2018-01-01
2 | 8995157800257 | Pandan Wangi CF 5kg | 2 | 2018-01-05
3 | 8995157800257 | Pandan Wangi CF 5kg | 6 | 2018-02-01
4 | 8995157800264 | Pandan Wangi CF 10kg | 4 | 2018-02-02
5 | 8995157800264 | Pandan Wangi CF 10kg | 9 | 2018-02-03
6 | 8995157800271 | Pandan Wangi CF 20kg | 1 | 2018-02-04
7 | 8995157800271 | Pandan Wangi CF 20kg | 2 | 2018-02-05
8 | 8995157800271 | Pandan Wangi CF 20kg | 1 | 2018-02-10
9 | 8995157800288 | Rojolele CF 5kg | 5 | 2018-02-15
10 | 8995157800288 | Rojolele CF 5kg | 3 | 2018-02-16
11 | 8995157800318 | SR CF 5kg | 8 | 2018-02-20
12 | 8995157800318 | SR CF 5kg | 2 | 2018-02-25
13 | 8995157800325 | SR CF 10kg | 10 | 2018-02-28
14 | 8995157800325 | SR CF 10kg | 5 | 2018-03-01
Я хочу получить данные оборачивания из таблицы detail_order со своим штрих-кодом продукта, но даже если данные продукта в таблице mainproduct не находятся в таблице detail_order, я хочу, чтобы он отображался с более поздним total_order 0, если он не находится в detail_order Таблица. Меньше, чем указано ниже:
id_mainproduct | barcode | product_name | total_order_pcs |
================+===============+======================+====================+===
1 | 8995157800257 | Pandan Wangi CF 5kg | 6 |
2 | 8995157800264 | Pandan Wangi CF 10kg | 13 |
3 | 8995157800271 | Pandan Wangi CF 20kg | 4 |
4 | 8995157800288 | Rojolele CF 5kg | 8 |
5 | 8995157800301 | Rojolele CF 20kg | 0 |
6 | 8995157800318 | SR CF 5kg | 10 |
7 | 8995157800325 | SR CF 10kg | 10 |
8 | 8995157800332 | SR CF 20kg | 0 |
на самом деле я могу подключить две таблицы, но в разделе данных в mainproduct, у которого нет данных в detail_order, я не могу его отобразить, пожалуйста, помогите мне.
мой код:
SELECT mainproduct.id,
mainproduct.barcode,
mainproduct.product_name,
SUM(R.pcs_order) as total_order
FROM
(
SELECT barcode, pcs_order, date_order
FROM detail_order
) AS R
LEFT JOIN mainproduct ON mainproduct.barcode = R.barcode
WHERE r.date_order BETWEEN '2018-02-01' AND '2018-02-28' GROUP BY mainproduct.id
ORDER BY mainproduct.id ASC
Независимо от ваших комментариев, у вас все еще есть соединение в неправильном порядке.
a LEFT JOIN b
означает сохранение каждой записи, которая появляется в a
, даже если в строке b
нет соответствующей строки.
Если вам нужен объем продаж каждого продукта, даже если нет записей о продажах для продукта (с указанием нуля), вам нужны products LEFT JOIN sales
.
Если вы хотите только подсчитать продажи в течение определенного времени, отфильтруйте продажи. Перед присоединением (sub, в вашем подзапросе).
SELECT
mainproduct.id,
mainproduct.barcode,
mainproduct.product_name,
COALESCE(SUM(R.pcs_order), 0) AS total_order
FROM
mainproduct
LEFT JOIN
(
SELECT barcode, pcs_order, date_order
FROM detail_order
WHERE date_order BETWEEN '2018-02-01' AND '2018-02-28'
)
AS R
ON mainproduct.barcode = R.barcode
GROUP BY
mainproduct.id
ORDER BY
mainproduct.id ASC
У вас может быть несколько запросов для одной и той же проблемы. Вы можете использовать это.
select p.barcode,p.product_name, coalesce(d.pcs_order, 0)
from (select barcode, sum(pcs_order) pcs_order from detail_order group by barcode) as d
right join mainproduct p on p.barcode = d.barcode
Вам нужно присоединиться к своим столам и сделать агрегацию
select p.barcode,p.product_name, coalesce(sum(d.pcs_order),0)
from mainproduct p
left join detail_order d on p.barcode = d.barcode
group by p.barcode, p.product_name