我该如何为订单表编写select语句?

时间:2013-12-01 19:41:08

标签: sql sql-server

在我的应用程序中,当用户登录其用户名时,日期时间将插入名为ORDER_ID的表中,该表自动递增1。然后我将该号码撤回以便稍后使用SELECT SCOPE_IDENTITY()。此时,用户需要回答一些个人信息,并且在回答之后,用户可以选择他希望返回或订购的一些产品。最后,一旦用户做出选择,所有信息都会保存在ORDERS表中,如下所示:

enter image description here

我如何编写查询以便SQL将所有订单完全分开?

3 个答案:

答案 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