2016-04-15 9 views
0

query1列Display Groupを使用して、下のC#コードのクエリ2にする方法C#コード内の別のSQLクエリに1つのSQLクエリの列を使用する方法

私はquery1の列を入れたい場所を????という記号で表しました。

public class PopulateRangeInStore 
{ 

    [Test] 
    [Category(TestType.NeedsDeployment)] 
    public void PopulateRangeInStores() 
    { 
     ExecutePopulateRangeInStoreProcedure("csg_sp_populate_RangeInStore"); 

     using (var connection = IKBDatabaseConnection.GetConnectionForIKBTFS()) 
     { 
      string query1 = "SELECT count (distinct DESC7) FROM ix_spc_planogram (NOLOCK) WHERE dbstatus= 1"; 
      string query2 = "SELECT count (distinct EquipmentType) FROM Csg_Range_In_Store (NOLOCK) WHERE DisplayGroup = '" + ?????+ "'"; 
      var command1 = new SqlCommand(query1, connection); 
      var command2 = new SqlCommand(query2, connection); 
      //string output = " "; 
      //var = " "; 
      //var actualDG = " "; 
      var actualDG = " "; 
      var expectedDG = " "; 
      var dataReader1 = command1.ExecuteReader(); 
      var dataReader2 = command2.ExecuteReader(); 
      if (dataReader1.Read()) 
      { 
       DataTable dt = new DataTable(); 
       dt.Load(dataReader1); 
       expectedDG = dt.Rows.Count.ToString(); 
      } 

      if (dataReader2.Read()) 
      { 
       DataTable dt = new DataTable(); 
       dt.Load(dataReader2); 
       actualDG = dt.Rows.Count.ToString(); 
      } 
      actualDG.Should().Be(expectedDG); 



     } 

    } 


    private void ExecutePopulateRangeInStoreProcedure(string storedProcedure) 
    { 
     using (var connection = IKBDatabaseConnection.GetConnectionForIKBTFS()) 
     { 
      using (SqlCommand cmd = new SqlCommand(storedProcedure, connection)) 
      { 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.Parameters.Add("@ix_sys_error", SqlDbType.Int).Value = 0; 

       cmd.CommandTimeout = 0; 
       cmd.ExecuteNonQuery(); 
      } 
     } 
    } 





} 
+0

"????"と表示されたコードの場所が表示されません。記号 – chameleon86

+0

@ chameleon86私はちょうど今編集できました....あなたは今質問2でそれを見ることができますか? –

+0

1)このような連結を試みると、SQLインジェクション(潜在的に、とにかく)が可能になります。 2)プログラムによる結合を試みているときは、ほとんどの場合、サーバー上で結合を実行して結果を報告する方が速いでしょう。 3)最初のクエリによって出力される唯一の列は、カウントになります。これは、決して正しいものではありません。 –

答えて

0

???の代わりにサブクエリを作成して解決できます。

string query2 = "SELECT count (distinct EquipmentType) FROM Csg_Range_In_Store (NOLOCK) WHERE DisplayGroup in (" + query2 +")";
+0

@Sumit Dwivediはこれがあなたのために働いていますか? – mbadeveloper

関連する問題