[英]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.