2015-07-20 35 views
2

我想要检索与特定ID相关的所有数据以及所有在同一个表中具有位值1的数据。从表中检索多个值,位值和ID

这是表中的数据:

Description 
--------------------- 
INT  DID 
INT  DescID    
VARCH  DescTitle 
VARCH  DescText 
BIT  ForAll 

Description_Join 
--------------------- 
INT  DJID 
INT  DescID 
INT  ProductID 

该表由DescID接合。因此,现在我想显示具有特定ProductID(来自request.querystring)的所有数据,并且我还希望显示表格“description”中的所有数据,其中字段“ForAll”的BIT值为1.

我只是不能得到这个工作。

这是SQL我试图

SELECT D.DescID, DJ.DescID, DJ.ProductID, D.ForAll, D.DescTitle, D.DescText 
FROM Brand_Variant_Description D 
INNER JOIN Description_Join DJ ON (D.DescID = DJ.DescID) 
WHERE DJ.ProductID=222 AND D.BrandDescAllSel=1 
+0

在最后一行写错误。应该是......'AND D.ForAll = 1' –

回答

1

我想你需要一个特定的productid加上数据与位值1,即使它有不同的productid匹配所有数据。如果这是你所需要的,那么在你的查询中改变Inner join作为左连接并且替换final AND作为OR像这样

SELECT D.DescID, DJ.DescID, DJ.ProductID, D.ForAll, D.DescTitle, D.DescText 
FROM Brand_Variant_Description D 
LEFT JOIN Description_Join DJ ON (D.DescID = DJ.DescID) 
WHERE DJ.ProductID=222 OR D.BrandDescAllSel=1 
+0

认为内连接应该保持内连接而不是左连接。 BrandDescAllSel当然是ForAll。 – Tom

+0

非常好,那正是我一直在寻找的!谢谢@Jasqlg –

0

尝试此查询

SELECT D.DescID 
    ,DJ.DescID 
    ,DJ.ProductID 
    ,D.ForAll 
    ,D.DescTitle 
    ,D.DescText 
FROM Brand_Variant_Description D 
LEFT JOIN Description_Join DJ ON (D.DescID = DJ.DescID) 
    AND (D.ForAll = 1) 
WHERE DJ.ProductID = 222 
    AND D.BrandDescAllSel = 1