【问题标题】:Time and Date fields not synchronized with ID field时间和日期字段与 ID 字段不同步
【发布时间】:2013-03-17 13:26:06
【问题描述】:

我的表格中的数据

    item
item_id  name
1        ball
2        cap
3        bat

    order
order_id  date         time
1         06/01/2013   15:12
2         12/01/2013   11:10
3         06/01/2013   23:10
4         23/01/2013   10:55

    orderform
order_id item_id quantity
1        1       2
1        3       4
2        1       1
3        2       3
3        1       2
3        3       1
4        1       2

目前我正在使用以下 sql 查询:

 SELECT
  order_id, 
  group_concat(txt) AS txt,
  date,
  time
FROM (
    SELECT 
      orderform.order_id AS order_id,
      order.date AS date,
      order.time AS time,
      CONCAT(orderform.quantity, ' x ',item.name) AS txt
    FROM order orderform
    LEFT JOIN item ON orderform.item_id = item.item_id
) AS baseview
GROUP BY order_id

我明白了,日期和时间与 id 不同步。

order_id  name                      date         time
1         2 x ball,4 x bat          06/01/2013   15:12
2         ball                      06/01/2013   23:10
3         3 x cap,2 x ball,bat      06/01/2013   15:12
4         2 x ball                  06/01/2013   15:12

它应该看起来像这样。我应该在这个查询中为时间和日期做另一个子选择吗?感谢您的帮助。

          order_id  name             date         time
1         2 x ball,4 x bat          06/01/2013   15:12
2         ball                      12/01/2013   11:10
3         3 x cap,2 x ball,bat      06/01/2013   23:10
4         2 x ball                  23/01/2013   10:55

感谢您的帮助。

【问题讨论】:

    标签: mysql sql group-concat


    【解决方案1】:

    实际上,即使不使用子查询,您也可以获得想要的结果。

    SELECT  a.order_ID,
            GROUP_CONCAT(CONCAT(b.quantity, ' x ',c.name) SEPARATOR ', ') ItemName,
            MAX(a.date) date,
            MAX(a.time) time
    FROM    `order` a
            INNER JOIN orderform b
                ON a.order_id  = b.order_id 
            INNER JOIN item c
                ON b.item_id = c.item_id 
    GROUP   BY a.order_ID
    

    【讨论】:

      【解决方案2】:

      您的查询缺少orderorderform 应如何组合在一起的条件。

      SELECT
        order_id, 
        group_concat(txt) AS txt,
        date,
        time
      FROM (
          SELECT 
            orderform.order_id AS order_id,
            `order`.date AS date,
            `order`.time AS time,
            CONCAT(orderform.quantity, ' x ',item.name) AS txt
          FROM `order`, orderform
          LEFT JOIN item ON orderform.item_id = item.item_id
          WHERE orderform.order_id = `order`.order_id
      ) AS baseview
      GROUP BY order_id
      

      工作示例:http://sqlfiddle.com/#!2/66706/6

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-26
        • 2016-04-16
        • 2017-08-08
        • 2018-01-06
        • 1970-01-01
        • 1970-01-01
        • 2019-01-03
        • 2015-10-01
        相关资源
        最近更新 更多