2016-09-12 12 views
-1

次の表があります。この表には、クライアントとその製品に関する情報が含まれています。私は、私が探している特定の製品をクライアントに返すクエリを書くつもりです。私はこのクエリで複数のWHERE句を使用すると、正しい結果セットが返されない

INSERT INTO dbo.MainTable VALUES ('Client_1', 1, 'Suite 09', 'VA') 
INSERT INTO dbo.MainTable VALUES ('Client_2', 2, 'Suite 07', 'VA') 

表を使用しました

表にINSERT文の

CREATE TABLE [dbo].[MainTable](
    [Client_Name] [nChar](10) NULL, 
    [Client_ID] [int] NULL, 
    [Product_Name] [nChar](10) NULL, 
    [Client_State] [nChar](10) NULL 
) ON [PRIMARY] 

例を作成し

Client_Name Client_ID Prod_Name Client_State 
------------------------------------------------------ 
Client_1  1   Suite 09  VA 
Client_2  2   Suite 07  VA 
Client_2  2   Suite 08  VA 
Client_3  3   Suite 10  VA 
Client_4  4   Suite 10  VA 
Client_4  4   Suite 11  VA 
Client_5  5   Suite 11  VA 

それでは、私は「製品とスイート10をすべてのクライアントをしたいとしましょう'AND' Suite 11 ' Client_4はこの基準に一致します。

私が返します空の結果セットを試してみましたクエリ:

SELECT [CLIENT_NAME] 
FROM [PRODUCTDB].[dbo].[MainTable] 
WHERE Product_Name = 'Suite 09' AND Product_Name = 'Suite 10' 

私は、OR句をしようとすると、私は私が望んでいない結果が得られます。たとえば、上記のクエリでAND句のためのORを代入すると、私を与える:私が行う必要がありますようにそれはそう何

Client_1 * This client does not have Suite 10, only Suite 09 
Client_3 * This client does not have Suite 09, only Suite 10 
Client_4 * This client is correct, it has both Suite 09 and Suite 10. 

は、一つの製品のためのクエリを記述し、その後、他のために別のクエリを記述で最初のクエリの結果を使用してうまくいけば、よりエレガントなソリューションがあります!

+0

http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple- sql-query – Strawberry

+0

@Strawberryあなたの提案に基づいていくつか変更を加えました。私が達成しようとしていることを理解しやすくして欲しいです。ありがとう –

+0

これらの変更には、CREATEステートメントとINSERTステートメントの提供、および望ましい結果が含まれていましたか? – Strawberry

答えて

2

などの利用OR代わりのANDProd_nameANDSuite09またはあなたの場合はそのSuite08

である、あなたはProd_Name同時に両​​方でなければなりませんと言って意味のいずれかを意味

WHERE Prod_Name = 'Suite09' OR Prod_Name = 'Suite08' 
          ^^ 

これは不可能です。

+0

私はORの使用について考えましたが、論理的には私には意味がないようです。それは「Suite09」を持っているか、「Suite08」を持っています。しかし、私はそれが両方を持っている場合を見つける必要があります。たとえば、ORを使用すると、Suite08のみが含まれた結果が返されます。 –

+0

申し訳ありません私はあなたが言っていることに従いました。なぜそれはちょうどSuite08を返し、09でないのですか? – SMA

+0

@SMA IN()を参照してください! – Strawberry

関連する問題