2016-02-01 91 views
0

不是最好的標題,因此我無法找到解決方案來修復我的問題,如果您知道一個問題,請指點我的方向。當表B中的條件滿足時,從表A中選擇

目前,我有以下查詢,

SELECT PRODUCT_NAME 
     ,LIVE 
     ,LOCATION 
FROM PRODUCT_TABLE 
WHERE ORDER = 'ONLINE' 
AND LIVE = '0' OR '1' 

這基本上是一個非常簡單的查詢拉回了很多,我一直在使用Excel數據鑽到但是我需要什麼,我的確定你可以想象一個真正乏味的過程,所以最好是直接用SQL來完成,因爲我知道它可以完成,只是我的知識在不使用它的時候完全消失了。

但基本上我想要實現的是在線查找所有在線生活的產品(0意味着在上述查詢中爲YES),並且在另一個沒有生存的位置具有匹配的產品名稱(在此案件不活= 1)。

例如下面是一些以類似方式格式化的數據。

LOCATION LIVE PRODUCT_NAME 
BERLIN  0  CHAIR 
LONDON  1  CHAIR 
PARIS  0  LAMP 
PARIS  0  SOFA 
WARSAW  1  CHAIR 
MADRID  0  CHAIR 
MANCHESTER 1  SOFA 

如果有人能提供一個解決方案或指向我的方向,那就太好了,謝謝!

回答

2

你想是這樣的:

select pt.* 
from product_table pt 
where pt.live = '0' and 
     exists (select 1 
       from product_table pt2 
       where pt2.product_name = pt.product_name and 
        pt2.location <> pt.location and 
        pt2.live = '1' 
      ); 
+0

'pt2.location <> pt.location'是有點多餘的,當我們有'live'的檢查,但我想這不會傷害擁有它。 – kamilk

+0

@kamilk。 。 。我想過這個。 OP不排除有兩行具有相同的位置和不同的「實時」值。 –

+0

對不起,你是對的 – kamilk

0
SELECT DISTINCT 
     pt.PRODUCT_NAME 
     ,pt.LIVE 
     ,pt.LOCATION 
FROM PRODUCT_TABLE pt 
LEFT JOIN PRODUCT_TABE pt2 
    on pt.NAME = pt2.NAME 
     AND pt2.LIVE = 1 
     AND pt.LOCATION != pt2.LOCATION 
WHERE pt.ORDER = 'ONLINE' 
AND pt.LIVE = '0' 
AND pt2.NAME IS NOT NULL 
相關問題