好的,所以希望我能在没有快乐的情况下寻求帮助。
所以我有一个关键'orderno',每个'orderno'有多个项目。每个项目都有一个状态。我想拉一个Q,它只显示包含状态为'x'
的项目的orderno所以如果有3个项目且只有1个显示状态'x'我想看到所有三个项目而不仅仅是那个。
基本上删除任何不显示x值的订单/商品。
所以table1
orderno / Itemno / Itemstatus
1 1 y
1 2 x
2 1 z
3 1 y
3 2 x
3 3 y
4 1 y
4 1 y
编辑:
所以基本上这些字母代表开放,关闭或进行...我想只看到有关闭和项目已关闭的订单以及正在进行的项目,所以我可以看到为什么订单只显示从那里部分完成。这里可能还没有意义。 GRRRR。
我需要为包含状态为“x”的项目的任何订单返回ORDER#和所有项目#。
答案 0 :(得分:2)
SELECT * FROM Order_Table
WHERE orderno IN
(SELECT orderno FROM Order_Table WHERE Itemstatus = 'x')
内部查询返回状态为'x'
的所有订单,外部订单返回这些订单的所有详细信息。
答案 1 :(得分:1)
我更喜欢EXISTS到IN或JOIN版本。一般来说更快。
添加了sqlfiddle。
CREATE TABLE table1(orderno INT, Itemno INT, Itemstatus CHAR(1))
INSERT INTO table1 VALUES
(1,1,'y')
,(1,2,'x')
,(2,1,'z')
,(3,1,'y')
,(3,2,'x')
,(3,3,'y')
,(4,1,'y')
,(4,1,'y')
SELECT *
FROM table1 a
WHERE EXISTS(SELECT 1
FROM table1 b
WHERE b.OrderNo = a.OrderNo
AND b.Itemstatus='x')