2016-09-30 3 views
0

order_productsSQL 쿼리 수정

return_products

return_products 테이블 컬럼과 같은 몇 가지 DB의 테이블이 실제 반환 제품의 수를 얻을 수 있습니다 표의 열 : id, order_id, product_id, quantity, price, sum

반환 제품 각 제품에 대한 모든 행,하지만 order_products는 양의 열을

이 지금과 같은 SQL 쿼리를 수주 어떤 제품 검색에 따라 얻을 :

SELECT `id`, `saved` 
FROM `orders` 
WHERE 1 AND (`id` IN(
    SELECT `order_id` 
    FROM `order_products` 
    WHERE `product_id` IN (1,2,3,4,5))) 
BY id DESC 
LIMIT 0, 30 

그리고 지금 필요 주문 및 제품 ID가 반품 및 반품 제품 테이블에 있는지 확인하기

예 : id으로 제품을 검색하는 경우 2 제품을 확인해야합니다. exi counts가 order_products 수량과 같으면 어떤 순서로 표시 할 필요는 없지만 반환 수량이 표시해야 할 것보다 order_products.quantity - COUNT (return_products) 이상이어야하는 경우

+0

샘플 데이터를 입력하십시오. 리턴 테이블은 무엇입니까? return_products.order_id 또는 order_nr은 판매 주문을 나타 냅니까? – Serg

답변

0

주문 테이블과 관계가 없지만 order_products/return_products 수량 비교에 대한 논리가 있습니다.

select op.product_id, op.quantity, count(rp.id) 
from order_products op 
left join return_products rp on rp.product_id = op.product_id --maybe need to join on order_id too ? Not really clear 
group by op.product_id, op.quantity 
--where op.product_id in (1, 2, 3, 4, 5) 
having op.quantity <> count(rp.id)