반응형
SELECT orders.* FROM orders JOIN order_rows
ON orders.id = order_rows.order_id
WHERE order_rows.quant <> order_rows.quant_fulfilled
GROUP BY orders.id
ORDER BY orders.id DESC
해당 order_row 항목이없는 행 (아직 항목이없는 주문)을 포함하려면이 항목이 필요합니다. ON 또는 WHERE 절에 추가하여이를 수행하는 방법이 있어야하는 것 같습니다.
주어진 시간에 몇 개의 빈 주문 만있을 것이므로 이에 대한 최선의 답변이 성능을 크게 저하시키는 경우 별도의 쿼리를 사용합니다. 그러나 나머지와 함께 orders.id별로 정렬되도록이 쿼리에 포함시키고 싶었습니다. 항목이없는 1-3 개의 주문을 포함하기 위해 쿼리 시간을 두 배로 늘리고 싶지는 않습니다.
MySQL을 사용하고 있습니다. 조언에 미리 감사드립니다.
해결 방법
JOIN
대신 LEFT JOIN
을 사용하면됩니다. 모든 주문 행을 얻을 수 있습니다.
SELECT orders.* FROM orders LEFT JOIN order_rows
ON orders.id = order_rows.order_id
WHERE order_rows.quant IS NULL OR order_rows.quant <> order_rows.quant_fulfilled
GROUP BY orders.id
ORDER BY orders.id DESC
참조 페이지 https://stackoverflow.com/questions/15124705
반응형
'MySql' 카테고리의 다른 글
MySQL virtualenv, mysql-python, pip : 누구든지 방법을 알고 있습니까? (0) | 2021.01.10 |
---|---|
MySQL SQL을 사용하여 날짜별로 정렬 할 수 있지만 결과 집합 뒤에 null 날짜를 넣을 수 있습니까? (0) | 2021.01.10 |
MySQL mysql에서 제한을 사용하여 여러 행을 업데이트합니까? (0) | 2021.01.10 |
MySQL MYSQL WHEN CASE THEN 아무것도하지 않음 (0) | 2021.01.09 |
MySQL What's the best way to search a MySQL database with PHP? (0) | 2021.01.09 |
댓글