2

私のテーブルのデータ

    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

手伝ってくれてありがとう。

4

2 に答える 2

2

実際には、サブクエリを使用しなくても、目的の結果を得ることができます。

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
于 2013-03-17T13:31:52.477 に答える
0

クエリに条件がorderありorderformません。どのように組み合わせる必要がありますか。

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

于 2013-03-17T13:37:24.983 に答える