簡體   English   中英

搜索具有兩種產品的訂單,一種具有特定參考,另一種具有特定描述

[英]Search for orders that have two products, one with specific reference, other with specific description

我有一個SQL查詢問題,似乎很容易解決,但我不知道如何使它工作。

我基本上有兩個表:Orders和OrderDetails ...每個訂單都有幾個產品,在OrderDetails表中注冊。 我希望能夠找到所有有2種產品的訂單; 一個帶有特定參考,另一個帶有特定描述。

這是我寫的查詢:

SELECT
  o.orderNumber

FROM
  `order` AS o

JOIN
  `orderDetail` AS d ON o.id = d.orderID

WHERE
  d.reference = "F40" AND 
  d.description = "Epee"

這是小提琴: http ://sqlfiddle.com/#!2/ bd94e/1

查詢返回0記錄,應返回訂單號QQ00000QQ

有人可以告訴我如何使該查詢工作嗎? 非常感謝你!!

如果我對您的理解正確,那么您想找到一個訂單,其中一個訂單項滿足條件(參考=“ F40”),另一訂單項滿足另一個條件(描述=“ Epee”)。

進行單個聯接並不能解決此問題,因為您將搜索一條同時滿足這兩個條件的訂單行。 您應該改為執行以下操作:

SELECT orderNumber FROM `order`
WHERE id IN (
    SELECT orderid FROM orderDetail od1
    INNER JOIN orderDetail od2
    USING (orderid)
    WHERE od1.reference = 'F40' AND od2.description = "Epee"
)

我認為您必須創建一個相同的字段。 例如: order = id_order orderDetail = id_order

然后,如果要查找所有內容,則必須插入相同的id_order。 例如:

INSERT INTO `order`
(id_order , orderNumber)
VALUES
('1','QQ00000QQ'),
('2','AA11111AA'),
('3','LO00000OL'),
('4','AA12345BB');


INSERT INTO `orderDetail`
(orderID, reference, description,id_order)
VALUES
(1, 'F40', 'Wire','1'),
(1, 'Q25', 'Epee','1'),
(1, 'Z99', 'Mask','1'),
(2, 'F40', 'Wire','2'),
(3, 'Q25', 'Epee','2'),
(4, 'F40', 'Wire','4'),
(4, 'Z99', 'Mask','3');

SELECT
  o.orderNumber

FROM
  `order` AS o

JOIN
  `orderDetail` AS d ON o.id = d.orderID

WHERE
  d.reference = '4'

GROUP BY
  o.id

您的查詢與您的數據不匹配。 沒有與d.reference = "F40" d.description = "Epee" d.reference = "F40"匹配的記錄。

如果要退回訂單號QQ00000QQ,則需要

SELECT
  o.orderNumber

FROM
  `order` AS o

JOIN
  `orderDetail` AS d ON o.id = d.orderID

WHERE
  d.reference = "F40" AND 
  d.description = "Wire" //Note change to condition

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM