我有这些表格:
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
答案 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的记录),您可能需要更改查询以使用左连接