LEFT JOIN каждый раз с нулевым значением - PullRequest
0 голосов
/ 27 мая 2020

Мне нужен совет о том, как объединить таблицы, чтобы названия и номера продуктов всегда отображались, даже если в других таблицах есть нулевые значения. Это связано с этим Список временных заказов

Возможно, я ошибаюсь и мне нужно искать решение в PHP.

Мне нужно для просмотра количества элементов каждый день и в определенные часы для просмотра статуса «доступен» или «недоступен».

http://sqlfiddle.com/#! 9 / a343a3 / 6

Ответы [ 2 ]

2 голосов
/ 27 мая 2020

Поместите условия where в join

SELECT p.name, p.quantity, p.input as input, p.price as price, SUM(ifnull(i.quantity,0)) as count
FROM product p
LEFT JOIN order_items i ON p.id = i.product_id
LEFT JOIN orders o ON o.id = i.order_id
                  AND `o`.`date` = '2020-05-20'
                  AND `o`.`time_start` = '11:30:00'
                  AND `o`.`time_end` = '12:30:00'
GROUP BY p.name

В противном случае ваше предложение where превратит ваш left join в inner join

SQLFiddle

1 голос
/ 27 мая 2020
SELECT
    p.`name`, 
    p.quantity, 
    p.input, 
    p.price,
    ifnull(oo.quantity,0) as count
FROM
    product AS p
    LEFT JOIN
        (SELECT
        i.product_id,
        sum(i.quantity) as quantity
    FROM
        order_items AS i
        INNER JOIN
        orders AS o
        ON 
            i.order_id = o.id
        WHERE (`o`.`date` = '2020-05-20') AND (`o`.`time_start` = '11:30:00') AND (`o`.`time_end` = '12:30:00')
        GROUP BY i.product_id) AS oo
    ON 
        p.id = oo.product_id

результат:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...