2017-04-11 18 views
0

私は、これらの4つのSQLクエリを持っている:彼らは簡素化することができ、最良の場合には、単一のクエリに組み合わせることがどのようにこれらのクエリを結合/簡略化する方法は?

SELECT `a017kstatus` FROM `a017` WHERE `a017kstatus`='A' AND `a017kjantina`='L';  
SELECT `a017kstatus` FROM `a017` WHERE `a017kstatus`='A' AND `a017kjantina`='P';  
SELECT `a017kstatus` FROM `a017` WHERE `a017kstatus`='TA' AND `a017kjantina`='L';  
SELECT `a017kstatus` FROM `a017` WHERE `a017kstatus`='TA' AND `a017kjantina`='P'; 

を?

答えて

0

4つのクエリすべての結果で構成される結果セットを取得することを覚えていると仮定すると、それらは一緒にUNIONになります。しかし、私たちは、単一のクエリを使用してさらに簡素化することができます:あなたは、各クエリで同じテーブルから同じフィールドを選択しているので

SELECT a017kstatus 
FROM a017 
WHERE a017kstatus IN ('A', 'TA') AND 
     a017kjantina IN ('L', 'P') 
0

、あなただけの彼らのwhere -clausesを結合する必要があります。

SELECT a017kstatus 
    FROM a017 
    WHERE a017kstatus='A' AND a017kjantina='L' 
    AND a017kstatus='A' AND a017kjantina='P' 
    AND a017kstatus='TA' AND a017kjantina='L' 
    AND a017kstatus='TA' AND a017kjantina='P' 

しかし、それはin演算子はを使用することによってさらに単純化することができる:1日あなたが別の値を抽出する必要があり

SELECT a017kstatus 
    FROM a017 
    WHERE a017kstatus in ('A','TA') 
    AND a017kjantina in ('L','P') 
+0

助けてくれてありがとう、私は別の列に結果が必要です。私を助けることができますか? –

+0

次に、複数の結合が必要になります。しかしそれは別の質問です。私はあなたが尋ねた質問に答えました。あなたはそれが答えられた後、質問を大きく変えてはいけません。私はあなたにこの質問を別々に依頼することをお勧めします。 –

0

場合、それはこのようになります。最初のステップとして

a017kjantinaa017kstatus( 'xx'は単なる例です):

SELECT a017kstatus 
    FROM a017 
    WHERE (a017kstatus ='A'AND a017kjantina in ('L','P')) 
     OR (a017kstatus ='L'AND a017kjantina in ('L','P', 'xx')) 
-1

連合はここにあなたを助けるはずです:

SELECT a017kstatus FROM a017 WHERE a017kstatus='A' AND a017kjantina='L' 
Union 
SELECT a017kstatus FROM a017 WHERE a017kstatus='A' AND a017kjantina='P' 
Union 
SELECT a017kstatus FROM a017 WHERE a017kstatus='TA' AND a017kjantina='L' 
Union 
SELECT a017kstatus FROM a017 WHERE a017kstatus='TA' AND a017kjantina='P'; 
+0

'UNION'はクエリを単一のものに結合しますが、決して単純化しません。 –

関連する問題