多對多關聯中,如何查詢是否存在包含指定水果組合的籃子?

多對多關聯中,如何查詢是否存在包含指定水果組合的籃子?

多對多關聯中指定組合的組是否存在查詢

在多對多關聯關系中,判斷是否存在具有指定關聯組合的組有時至關重要。以下示例展示了如何使用 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
喜歡就支持一下吧
點贊7 分享