doudi7570 2013-04-30 05:48
浏览 39
已采纳

MySql查询连接同一列的2行

Date table:

id  start_date  end_date
1   2013-04-28  2013-04-29
3   2013-04-18  2013-04-25
4   2013-05-22  2013-04-30
5   2013-05-02  2013-04-30
6   2013-04-29  2013-04-30

Time Table:

id  start_time  end_time
1   11:00 AM    12:00 AM
2   12:00 PM    03:00 PM

App table:

id  app_name
1   Test
2   Test1

Relation of the table is store in related table:

app_id  date_id  time_id
1          1       1 
1          1       2 
2          1       2 

I firing a sql query to get the data from database :

SELECT app.id as id,app.app_name,date.id as date_id ,
                date.start_date,date.end_date,time.id as time_id,time.start_time,time.end_time as end_time
                FROM  related_data
                INNER JOIN app ON app.id = app_id
                INNER JOIN DATE ON date.id = date_id
                INNER JOIN Time ON time.id = time_id
                LIMIT 0 , 30

but it return :

id  app_name    date_id     start_date  end_date    time_id     start_time  end_time
1   Test    1   2013-04-28  2013-04-29  1   11:00 AM    12:00 AM
1   Test    1   2013-04-28  2013-04-29  2   12:00 PM    03:00 PM
2   Test1   1   2013-04-28  2013-04-29  2   12:00 PM    03:00 PM

but I want like this:

id  app_name    date_id     start_date  end_date    time_id     start_time  end_time
1   Test    1   2013-04-28  2013-04-29  1,2     11:00 AM,12:00PM    12:00 AM,03:00PM
2   Test1   1   2013-04-28  2013-04-29  2   12:00 PM    03:00 PM

If app id is same and date id or time id different then concat the data.

  • 写回答

1条回答 默认 最新

  • doudonglu3764 2013-04-30 05:52
    关注

    use GROUP_CONCAT

    SELECT  app.id as id,
            app.app_name,
            date.id as date_id , 
            date.start_date,
            date.end_date,
            GROUP_CONCAT(time.id) as time_id,
            GROUP_CONCAT(time.start_time) start_time,
            GROUP_CONCAT(time.end_time) as end_time 
    FROM    related_data 
            INNER JOIN app 
                ON app.id = app_id 
            INNER JOIN DATE 
                ON date.id = date_id 
            INNER JOIN Time 
                ON time.id = time_id 
    GROUP   BY  app.id as id,
                app.app_name,
                date.id as date_id , 
                date.start_date,
                date.end_date
    LIMIT   0, 30
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)