在我的应用程序中,当用户登录其用户名时,日期时间将插入名为ORDER_ID
的表中,该表自动递增1。然后我将该号码撤回以便稍后使用SELECT SCOPE_IDENTITY()
。此时,用户需要回答一些个人信息,并且在回答之后,用户可以选择他希望返回或订购的一些产品。最后,一旦用户做出选择,所有信息都会保存在ORDERS
表中,如下所示:
我如何编写查询以便SQL将所有订单完全分开?
答案 0 :(得分:0)
一个例子:
//If connection is closed > open..if open, skip
int connOpen = 0;
if (connection.State == ConnectionState.Closed)
{
connection.Open();
connOpen = 1;
}
//Query
String query = @"SELECT * FROM Resultaat WHERE Order_ID = @ID";
SqlCommand cmd = new SqlCommand(query, connection);
cmd.Parameters.Add(new SqlParameter("ID", idInt));
//Read the result
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
String name = reader["User"].ToString();
String product = reader["Product"].ToString();
int id = (int)reader["Order_ID"];
}
// IF OPEN THEN CLOSE
if (connOpen == 1)
connection.Close();
}
cmd.Parameters.Clear();
答案 1 :(得分:0)
您应该单独拥有一个表,其中包含有关用户名和内容等用户的数据,以及该表上的主键以唯一标识每个用户,并且您在此订单表中使用该主键作为外键来引用订单给每个用户。我真的不知道你的意思是Grouping Orders“SQL将所有订单完全和单独地分组”。
要显示每个用户对所有订单进行分组的数据,您需要使用报告工具sql server用于存储不显示信息的信息。您可以将SSRS作为Microsoft的免费工具用于此目的。
答案 2 :(得分:0)
您可以使用以下查询以逗号分隔返回产品。这些值是split(',')方法,用于根据订单获取用户产品
SELECT O1.OrderId ,
Stuff((SELECT ', ' + Product
FROM tblOrder O2
WHERE O2.OrderId=O1.OrderId
FOR XML PATH('')), 1, 2, '') Product
FROM tblOrder O1
GROUP BY O1.OrderId