판매되는 모든 제품을 선택하는 쿼리가 있습니다. 내가 원하는 것은 질의를 되돌리고 일정 기간 내에 판매되지 않는 모든 제품을 얻는 것입니다.어떤 종류의 JOIN을 사용할 수 있습니까? mysql
일정 기간 내에 판매 된 모든 제품에 대한 쿼리입니다.
SELECT
product.product_id,
product.product_brand_id,
product.product_model_id,
product.product_subcategory_id,
product.product_retail_price,
product.product_wholesale_price,
product.product_aretail_price,
product.product_awholesale_price,
product.product_oretail_price,
product.product_owholesale_price,
product.product_quoted_price,
product.product_aquoted_price,
product.product_dquoted_price,
product_sold.product_type, SUM(product_sold.product_quantity) AS product_quantity_sold, SUM(product_sold.product_total_price) AS total_price_sold
FROM product
INNER JOIN product_sold
ON product.product_id = product_sold.product_id
AND product.product_subcategory_id = '$subcategory_id'
INNER JOIN sales
ON sales.sales_id = product_sold.product_sales_id
WHERE sales.sales_approved = '1'
AND sales.sales_approved_time > '$start_timestamp'
AND sales.sales_approved_time < '$end_timestamp'
GROUP BY product_sold.product_type, product.product_id
ORDER BY SUM(product_sold.product_quantity) DESC
누군가가 팔리지 않는 제품을 얻는 방법에 대한 안내를 제공 할 수 있습니까? 여기에 아이디어가 없습니다. 감사.
답변 :
SELECT
p.product_id,
p.product_brand_id,
p.product_model_id,
p.product_subcategory_id,
p.product_retail_price,
p.product_wholesale_price,
p.product_aretail_price,
p.product_awholesale_price,
p.product_oretail_price,
p.product_owholesale_price,
p.product_quoted_price,
p.product_aquoted_price,
p.product_dquoted_price,
pq.product_stock_type
FROM
product p
LEFT JOIN
product_sold ps
ON
p.product_id = ps.product_id
INNER JOIN
product_stock pq
ON
p.product_id = pq.product_id
AND
pq.product_quantity > 0
WHERE
p.product_subcategory_id = '$subcategory_id'
AND
ps.product_id IS NULL
판매되지 않은 제품의 목록이'sales_approved'가''1 ''이 아닌 판매를 고려해야합니까? 귀하의 질문에, 그것은 당신의 비즈니스 규칙에 판매가 완료되었는지에 대한 약간의 미묘함이있는 것 같습니다. 설명 해주십시오. –
당신은'GROUP BY'에 비표준 MySQL 확장을 사용하고 있습니다. 확장 프로그램을 올바르게 사용하고있는 것처럼 보이지만 검색어를 변경하려면 잘못 사용하기 시작할 수 있습니다. 이 내용을 읽고 조심하십시오. http://dev.mysql.com/doc/refman/5.6/en/group-by-extensions.html –
모든 제품이 다른 테이블에서 판매되고 판매가 생성 될 때마다 판매 테이블에 기록을 남긴다. 일단 판매가 완료되면 나는 판매 된 제품이 판매 승인을 받았는지 확인하기 위해 더 이상 판매 테이블에 가입하지 않아도되는 방식으로 판매 된 판매 시간으로 판매 된 제품을 업데이트합니다. 보류중인 판매는 0으로 표시되고 1로 개선되고 2로 취소됩니다. 텍스트를 보내 주시면 매우 유용합니다. –