2016-10-07 16 views
0

を持つとは別個のレコードを取得します。 私はこのコードを使用しました。あなたはこの問題、または任意のリンクに遭遇した場合、助けてくださいSQL私はテーブルを持っているグループは、共通のフィールド

Product 
Water 
Cream 

:しかし、私は私のクエリに問題があることを把握することはできません、それはそれは結果を取得する必要があり、誤った結果

SELECT DISTINCT 
    s.product 
FROM supplier_product s 
WHERE EXISTS (SELECT 
    * 
FROM supplier_product 
WHERE supplier_product.product = s.product 
AND supplier_product.status = 'SUB') 

を持っています/提案。私はそれについて学ぶことがうれしいです。ありがとう。

答えて

2

これは、最も簡単に凝集を使用して行われます:

select sp.product 
from supplier_product sp 
group by sp.product 
having min(sp.status) = max(sp.status) and -- the statuses are all the same 
     min(sp.status) = 'SUB';    -- the value is 'SUB' 
+0

も、あなたにそれを@Gordon Linoffありがとうございました私のために働く。 :) – user3818587

1

あなたがHAVINGGROUP BYを使用することができます。

SELECT product 
FROM supplier_product 
GROUP BY product 
HAVING 
    SUM(CASE WHEN status = 'SUB' THEN 1 ELSE 0 END) > 0 
    AND SUM(CASE WHEN status <> 'SUB' THEN 1 ELSE 0 END) = 0 

ONLINE DEMO

+0

@Felix Pamittanありがとうございました、それは働いています。デモもありがとう。 :D – user3818587

-1
select distinct product 
from supplier_product 
where status = 'SUB' 
関連する問題