我会像这样简化表格:
table order:
order_id | name
1 a
2 b
3 c
Table order_item:
item_id | fk_order_id | status
1 1 0
2 1 1
3 2 1
4 2 1
5 3 0
就绪状态让我们说是1,所以只有order_id = 2的所有项目都处于就绪状态。
如何查询选择它?
答案 0 :(得分:0)
试试这个: SELECT order_id,name FROM order,order_item WHERE order.order_id = order_item.fk_order_id 按order_id分组,名称有min(status)= 1
答案 1 :(得分:0)
有几种方法可以做到这一点 - 这里有一个使用COUNT
- 获得所有COUNT
并与状态= 1的COUNT
进行比较:
SELECT fk_order_id
FROM (
SELECT fk_order_id,
COUNT(1) totCount,
COUNT(CASE WHEN Status = 1 THEN 1 END) statusCount
FROM Order_Item
GROUP BY fk_order_id
) t
WHERE totCount = statusCount
这可以合并到一个查询中,但我认为使用子查询可以更好地阅读。