:
declare @Sql varchar(max) = '
insert into ProductInOrder (OrderID, ProductID)
select
' + @OrderID + ',
ProductID
from
Product
where
ProductID in (' + @Products + ')'
sp_executesql(@Sql)
峠@Products
の整数をカンマで区切った文字列、e.g.- '1,2,3,15,100'
としてインチ
C#で一時テーブルをアップロードするには、この操作を行うと思います(使用してSqlCommand
命名comm
):
comm.CommandText = "create table #ProductList (ProductID int)";
comm.ExecuteNonQuery();
comm.CommandText = "insert into #ProductList (ProductID) values (@ProductID)";
foreach(int product in products)
{
comm.Parameters.Clear();
comm.Parameters.AddWithValue("@ProductID", product);
comm.ExecuteNonQuery();
}
comm.Parameters.Clear();
comm.Parameters.AddWithValue("@OrderID", orderId);
comm.CommandText = "insert into ProductInOrder (OrderID, ProductID) " +
"select @OrderID, p.ProductID from Product p inner join #ProductList pl on " +
"p.ProductID = pl.ProductID";
comm.ExecuteNonQuery();
comm.CommandText = "drop table #ProductList";
comm.ExecuteNonQuery();
あなたはどのようにクエリを書くかを尋ねていますが、使用しているRDBMS(Oracle、MySQL、SQL Server、PostGreSQL、SQLite ...)とそのRDBMSのバージョンがわからないと答えにくいです。 SQLの実装は異なります。たとえば、クエリの効率を向上させるために使用できる機能があります。また、SQL構文もさまざまです。 – Benoit
@Benoitまた、すべてのクライアントが特定のRDBMSのすべての機能を利用できるわけではないので、ここのクライアントも重要です。 –
私はC#とMSSQLを使用していますが、実際のアプリケーションではありません。 – BCartolo