0

大家好,我的查询如下所示,sql其中给出了结果,这是我的查询

SELECT Technology,TechDescription, Technology.TechID, COUNT(Question) AS 
  'Totalposts' FROM Technology LEFT JOIN Question ON Question.TechID = Technology.TechID    GROUP BY Technology.TechID, Technology,TechDescription

在此处输入图像描述

我只是将其写入存储过程,如下所示

USE [newForumDB]
GO
/****** Object:  StoredProcedure [dbo].[selectTechQuestions]    Script Date: 01/24/2013 15:06:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

create PROCEDURE [dbo].[selectTechQuestions]
 As
  SET FMTONLY OFF
Begin
  SELECT Technology,TechDescription, Technology.TechID, COUNT(Question) AS 
  'Totalposts'

FROM Technology

LEFT JOIN Questions

ON Questions.TechID = Technologies.TechID

GROUP BY Technologies.TechID, Technology,TechDescription
End

并将其添加到我的模型中,并尝试为该过程添加一个功能,但我收到了消息,The selected stored procedure returns no columns有人可以帮助我

在此处输入图像描述

根据Habib要求,我尝试了两种方式,即

1) writing the query in a string and filled the DataSet using SqlCommand and SqlDataAdapter which works fine

2) SqlCommand cmd = new SqlCommand();
cmd.CommandText = "selectTechQuestions";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);

第二个给了我错误{"Invalid object name 'Questions'."}

4

1 回答 1

1

把你的作为

SELECT Technology AS 'Technology',TechDescription AS 'TechDescription', Technology.TechID AS 'ID', COUNT(Question) AS 
'Totalposts'

FROM Technology

LEFT JOIN Questions

ON Questions.TechID = Technologies.TechID

GROUP BY Technologies.TechID, Technology,TechDescription

所以,很多时候当我得到这种类型的问题时,当时我已经这样做了。这很愚蠢,解决方案,但我已经提出了我的问题,可能对你有帮助....




详细描述
众所周知, select语句将结果作为单个数据集返回,即使它来自多个表,即像内部连接一样查询。

当数据来自多个表时,有可能会从具有相同名称的不同表中超过两个不同的列。

该子句在简单的数据获取方式中没有任何问题,即我们简单地使用DataAdapterSqlCommand完成,但实体框架无法处理这件事,因此编译器不允许查询,例如包含内连接或多表查询.

所以要解决这个问题,我们只需要像我在这里所做的那样为每列分配一个不同的名称,这样就不会有任何问题会导致......

于 2013-01-24T10:28:13.193 回答