MySQL - 与SELECT两个表结合使用

时间:2014-04-02 22:51:11

标签: mysql join union

我有这些表格:

reg_movs:

regmovs_id      id_car             date               status    
   1              1         2014-02-02 16:00:00         0
   2              1         2014-02-02 16:12:00         5         
   3              2         2014-02-02 16:22:03         0
   4              2         2014-02-02 16:45:14         5

service_detail:

id          id_Car                date_updated           price     
1             1               2014-02-02 16:12:00        45.00    
2             2               2014-02-02 16:45:14        30.00     

我的意思是,当status=0时,它会在SELECT QUERY中设置开始时间。而且,当status=5时,它将是结束时间。

如何进行此查询:

id_car     date         start         end                 price
  1     2014-02-02     16:00:00    16:12:00               45.00
  2     201-02-02      16:22:03    16:46:14               30.00

1 个答案:

答案 0 :(得分:1)

您需要先在reg_movs上进行自联接,才能将两行合并为一行。然后你需要内部加入这与service_detail选择汽车的价格。以下是基于为架构提供的信息的示例查询。

SELECT t1.id_car
    , DATE_FORMAT(t1.date, '%Y-%m-%d') AS date
    , DATE_FORMAT(t1.date, '%T') AS start
    , DATE_FORMAT(t2.date, '%T') AS end
    , service_detail.price 
FROM reg_movs AS t1 
    inner join reg_movs AS t2 on t1.id_car=t2.id_car AND t1.status=0 AND t2.status=5
    inner join service_detail ON t1.id_car=service_detail .id_car

如果要显示没有结束时间的记录(即表中只有一条状态为0的记录),您可能需要更改查询以使用左连接