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);

2番目のものは私にエラーを与えます{"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ステートメントは、複数のテーブルからの結果、つまり内部結合のようなクエリであっても、結果を単一のデータセットとして返します。

データが複数のテーブルから取得されると、同じ名前の異なるテーブルから2つの異なる列がオーバーする可能性があります。

この句は、単純なデータフェッチスタイルでは問題になりません。つまり、DataAdapterSqlCommandで単純に行ったように、エンティティフレームワークはこれを処理できません。したがって、コンパイラは、内部結合や複数のテーブルクエリを含むクエリを許可しません。 。

したがって、この問題を解決するには、ここで行ったように各列に異なる名前を割り当てる必要があります。このようにして、問題が発生する可能性はまったくありません...

于 2013-01-24T10:28:13.193 に答える