簡體   English   中英

SQL –在一個表中查找所有不存在鏈接記錄的記錄

[英]SQL – Find all records in one table where linked records don’t exist

我看到的其他“在一個表中但不在另一個表”中的線程略有不同。

我有3張桌子:

ProductFeed
    ProductFeedID INT
    ProductName NVARCHAR(30)

Product
    ProductID INT
    ProductFeedID INT
    StorefrontID INT

Storefront
    StorefrontID INT
    StorefrontName NVARCHAR(30)
  • ProductFeed表的每個記錄有一個唯一的產品。
  • 產品表可以有多個相同的ProductFeedID,但每個店面只能有0或1個唯一的ProductFeedID記錄。
  • 店面表每個店面有1條記錄。

我希望做的是一個查詢,顯示所有帶有StorefrontID和StorefrontName的ProductFeed記錄,其中不包含該店面的產品記錄。 所以像這樣:

ProductFeedID   ProductName    StorefrontID     StorefrontName
   123             iPod             1              MyStore1
   123             iPod             4              MyStore4
   234             TShirt           2              MyStore2
   234             TShirt           4              MyStore4
   345             Coffee Mug       5              MyStore5
   etc.

我正在使用SQL Server2012。有人可以幫忙嗎?

如果我理解正確,那么可以通過生成產品Feed和商店前沿的所有可能組合來解決此問題,然后使用left join 失敗的組合是您想要的組合:

select pf.*, sf.*
from productfeed pf cross join
     storefront sf left join
     product p
     on p.ProductFeedID = pf.ProductFeedID and
        p.StoreFrontId = pf.StoreFrontId
where p.ProductId is null

-我認為這是可以理解的。

    select pf.*, sf.*
    from productfeed pf  
    cross join storefront sf 
    where not exists (select 1 
                      from product p
                      where p.ProductFeedID = pf.ProductFeedID
                      and p.StoreFrontID = sf.StoreFrontID)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM