簡體   English   中英

跨表SQL查詢可從基於關鍵字的結果記錄中排除

[英]Cross table SQL Query to exclude from results records based on keyword

這是一個抓頭人(對我來說)...

我有兩個表A和B。A包含產品說明,B包含產品代碼,數量和科目。 這里的缺點是B在產品代碼上具有父子關系。

我想做的是將一個結果集放在一起,在其中我看到“帳戶”,“產品”,“描述”和“數量”,其中一個產品“數量” = 0,除非產品的“描述”中有一個關鍵字(我的“數量”不關心)。

所以,這是我現在的查詢:

SELECT Bp.Account, Bp.Product, A.Description, Bp.Qty FROM B 
AS Bp JOIN A as Prod  ON (Bp.Product = Prod.Product)  
WHERE EXISTS (Select * from B AS Bc 
              WHERE Bp.Account = Bc.Account
              AND Qty = 0)

這將返回一個非常好的結果集:

Account  Product Description Qty
ABC      XYZ     DESC-BLAH   1
ABC      XYY     DESC-DEE    0
ABC      ZXY     DESC-BILP   1
BDE      XAZ     DESC-OOPS   1
BDE      XYY     DESC-DEE    0
BDE      ZXY     DESC-BLIP   1

因此,可以說我想從結果集中排除DESC-OOPS以及與之相關的所有產品。 我想看看:

Account  Product Description Qty
ABC      XYZ     DESC-BLAH   1
ABC      XYY     DESC-DEE    0
ABC      ZXY     DESC-BILP   1

這可以在單個查詢中完成嗎?

提前謝謝了!

也許您可以添加您的WHERE條件:

SELECT Bp.Account, Bp.Product, A.Description, Bp.Qty FROM B 
AS Bp JOIN A as Prod  ON (Bp.Product = Prod.Product)  
WHERE EXISTS (Select * from B AS Bc 
              WHERE Bp.Account = Bc.Account
              AND Qty = 0)
  AND Bp.ACCOUNT NOT IN (SELECT ACCOUNT FROM Table WHERE Description = 'DESC-OOPS'

我不確定為什么這對您不起作用,但是也許:

SELECT *
FROM (SELECT Bp.Account, Bp.Product, A.Description, Bp.Qty 
      FROM B AS Bp 
      JOIN A as Prod  
         ON (Bp.Product = Prod.Product)  
      WHERE EXISTS (Select * from B AS Bc 
                  WHERE Bp.Account = Bc.Account
                  AND Qty = 0)
      )sub
WHERE ACCOUNT NOT IN (SELECT ACCOUNT FROM Table WHERE Description = 'DESC-OOPS'

暫無
暫無

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

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