0

次のように表を簡略化します。

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のみがすべてのアイテムの準備完了ステータスになります。

クエリで選択するにはどうすればよいですか?

4

2 に答える 2

0

これを試してください:SELECT order_id、name FROM order、order_item WHERE order.order_id = order_item.fk_order_id group by order_id、name has min(status)= 1

于 2013-03-22T04:06:19.250 に答える
0

これを行うにはいくつかの方法があります-これは使用する方法ですCOUNT-すべてを取得し、ステータス= 1COUNTと比較します: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

SQLフィドルデモ

これは単一のクエリに統合できますが、サブクエリを使用すると読みやすくなると思います。

于 2013-03-22T04:13:26.850 に答える