我有2个具有多对多关系的表。第一个表的每个item_ids
都有唯一的order_numbers
,属于另一个表中的几个item_group's
。
第二个表是包含不同不同item_group's
组的item_ids
(不同)的项目的主表。一个item_id's
可以属于多个item_group's
,反之亦然。
我已经尝试使用ROWID
函数进行多个联接,但似乎无法解决问题。
ORDER_NUMBER ITEM_ID ITEM_GROUP ITEM_ID
order_1 1 group_1 1
order_1 2 group_2 1
order_1 3 group_1 2
order_1 4 group_2 2
group_1 3
group_2 4
group_3 4
具有所有匹配order_number
的 item_ID's
必须包含item_group
。如果不是,则它必须返回item_id并且与名为item_group
的列中的new_items
不匹配。由于这是多对多关系,因此,join会创建重复项,并且无法提供我想要的内容。我希望得到以下结果:
ORDER_NUMBER NEW_ITEMS
order_1 group_1
order_1 4
答案 0 :(得分:0)
如果我正确理解,以下查询可以帮助您解决问题。
SELECT T1.ORDER_NUMBER, IG.ITEM_GROUP, T1.ITEM_ID
FROM T1
CROSS JOIN (SELECT DISTINCT ITEM_GROUP FROM T2) IG
LEFT JOIN T2
ON IG.ITEM_GROUP = T2.ITEM_GROUP AND T1.ITEM_ID = T2.ITEM_ID
WHERE T2.ITEM_GROUP IS NULL
输出:
+--------------+------------+---------+
| ORDER_NUMBER | ITEM_GROUP | ITEM_ID |
+--------------+------------+---------+
| order_1 | group_3 | 3 |
| order_1 | group_3 | 2 |
| order_1 | group_2 | 3 |
| order_1 | group_3 | 1 |
| order_1 | group_1 | 4 |
+--------------+------------+---------+