我有下表,它包含有关客户及其产品的信息。我期待编写一个查询,返回客户端我正在寻找的特定产品。
创建表
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]
我使用的插入语句示例
INSERT INTO dbo.MainTable VALUES ('Client_1', 1, 'Suite 09', 'VA')
INSERT INTO dbo.MainTable VALUES ('Client_2', 2, 'Suite 07', 'VA')
表
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'和' Suite 11'。 Client_4符合此条件。
我尝试的查询返回一个空结果集:
SELECT [CLIENT_NAME]
FROM [PRODUCTDB].[dbo].[MainTable]
WHERE Product_Name = 'Suite 09' AND Product_Name = 'Suite 10'
如果我尝试OR子句,我会得到我不想要的结果。例如,在上面的查询中用OR替换AND子句给我:
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 :(得分:2)
使用OR
代替AND
,如:
WHERE Prod_Name = 'Suite09' OR Prod_Name = 'Suite08'
^^
这意味着Prod_name
是Suite09
或Suite08
对于AND
的情况,您的意思是Prod_Name
应该同时是不可能的。