多對多關聯中指定組合的組是否存在查詢
在多對多關聯關系中,判斷是否存在具有指定關聯組合的組有時至關重要。以下示例展示了如何使用 sql 查詢實現此目標。
問題:
考慮以下表格:
- fruits(id, name)
- buckets(id)
- fruitbucket(id, bucket_id, fruit_id, count)
已知 1 號籃子包含 2 個蘋果(fruit_id=2)和 1 個香蕉(fruit_id=3),如何查詢是否存在另一個籃子也僅包含 2 個蘋果和 1 個香蕉?
解決方案:
一種方法是首先找到包含 2 個蘋果的籃子(t1),然后與包含 1 個香蕉的籃子(t2)進行交叉連接。這將返回所有同時滿足這兩個條件的籃子。
下一步是排除其他水果與這些籃子相關的籃子。為此,我們可以將上述查詢結果(t3)與只包含兩個水果的籃子集合(t4)連接起來。
sql 查詢:
select t3.bucket_id from ( select t1.bucket_id from (select bucket_id from FruitBucket where fruit_id = 2 and count = 2) t1 inner join (select bucket_id from FruitBucket where fruit_id = 3 and count = 1) t2 on t1.bucket_id = t2.bucket_id ) t3, ( select bucket_id from FruitBucket group by bucket_id having count(1) = 2 ) t4 where t3.bucket_id = t4.bucket_id
此查詢將返回符合指定條件的籃子的 id。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END