选择查询的问题

时间:2011-05-12 14:57:17

标签: sql database select ado.net

enter image description here

嗨,我已经包含了我的桌子的图像,我想做的是select top 6 from product detail whose state=1处于超级状态。任何帮助将不胜感激 。我想的是:

Select TOP 6 [productName] As test, [productDetail] AS test1 
From [productDetail] 
INNER JOIN test ON productDetail.makeID = feautureState.makeID 
Where feautureState.state='1'; 

但它不起作用:(

9 个答案:

答案 0 :(得分:4)

加入表名而不是列名

Select TOP 6 [productName] As test, [productDetail] AS test1
From [productDetail]
JOIN [featureState] ON productDetail.makeID=feautureState.makeID
Where feautureState.state='1';

答案 1 :(得分:2)

这应该有效。

另外,是状态字符串还是整数?

Select top 6 pd.ProductName,pd.ProductDetail
from dbo.ProductDetail pd
inner join dbo.FeatureState fs on pd.makeid=fs.makeid
where fs.state=1

答案 2 :(得分:2)

Select top 6 pd.productName, pd.productDetail
from productDetail pd
    Inner Join feautureState  fs on fs.makeID = pd.makeID
where fs.state = 1

答案 3 :(得分:1)

SELECT TOP 6
  pd.productName,
  pd.productDetail
FROM dbo.productDetail pd
INNER JOIN dbo.featureState fs on fs.makeID = pd.makeID
WHERE fs.makeID = 1

答案 4 :(得分:1)

INNER JOIN“test” - >这不是一张表

答案 5 :(得分:1)

您的内部联接是指未在架构图中指定的“测试”实体。这是“清理”此查询中的错误还是您实际运行的?如果是后者,那就是你的问题;它可能应该是“featureState”。

答案 6 :(得分:1)

您的内部联接应该说您要加入的表名。另外,我的猜测是state是int,而不是varchar,因此不需要引号。

Select TOP 6 [productName], [productDetail] 
From [productDetail] 
INNER JOIN featureState ON productDetail.makeID = feautureState.makeID 
Where feautureState.state = 1; 

答案 7 :(得分:1)

正如其他人所说,您可以使用以下内容更正您的查询。

SELECT TOP 6 [productName] As test, [productDetail] AS test1 
FROM [productDetail] 
INNER JOIN featureState ON productDetail.makeID = feautureState.makeID 
WHERE feautureState.state='1'; 

但是,您需要指定ORDER BY子句,否则您获得的结果将无法预测。

同样从您的架构图中,您与ProductDetailFeatureState建立了一对一的关系,也许状态标志应该是ProductDetail表中的一列?但您可能只提供数据库的简化版本。

编辑----回应评论。

要将列添加到现有表,假设您有数据。

ALTER TABLE ProductDetail
  ADD FeatureState BIT NULL 

或者您可以设置为not null并为所有现有行提供默认值

ALTER TABLE ProductDetail
  ADD FeatureState BIT NOT NULL CONSTRAINT [DF_ProductDetail_FeatureState] DEFAULT (0)

答案 8 :(得分:-1)

以下声明是您问题的解决方案之一。

选择前6名* 来自dbo.productDetail makelid in              (选择makelid               来自dbo.feautureState               其中State = 1              )