Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用具有相同id的select part2将选定列值转换为另一行_Php_Mysql_Select_Row - Fatal编程技术网

Php 使用具有相同id的select part2将选定列值转换为另一行

Php 使用具有相同id的select part2将选定列值转换为另一行,php,mysql,select,row,Php,Mysql,Select,Row,我正在制作一个简单的时间输入和时间输出系统。。我有三对进线和出线。p_idperson_id 表 p_id time_id status timestamp 1 1 in 2013-12-18 15:44:09 2 2 in 2013-12-18 16:23:19 1 3 out 2013-12-18 18:31:1

我正在制作一个简单的时间输入和时间输出系统。。我有三对进线和出线。p_idperson_id

p_id  time_id      status            timestamp
1         1           in        2013-12-18 15:44:09
2         2           in        2013-12-18 16:23:19
1         3           out       2013-12-18 18:31:11
1         4           in        2013-12-18 18:50:11
3         5           out       2013-12-18 19:20:16
1         6           out       2013-12-18 19:50:11
2         7           out       2013-12-18 19:51:19
1         8           in        2013-12-19 07:51:19
1         9           out       2013-12-19 12:00:19
1         10          in        2013-12-19 01:00:19
1         11          out       2013-12-19 05:30:19
1         12          in        2013-12-19 07:51:19
1         13          out       2013-12-19 11:00:19
将同一日期的结果放入表中一行

id status     timestamp        status     timestamp       status     timestamp          status      timestamp          status     timestamp       status      timestamp
1    in   2013-12-18 15:44:09   out   2013-12-18 18:31:11  in    2013-12-18 18:50:11    out     2013-12-18 19:50:11
2    in   2013-12-18 16:23:19   out   2013-12-18 19:51:19  
3                               out   2013-12-18 19:20:16
1    in   2013-12-19 07:51:19   out   2013-12-19 12:00:19  in    2013-12-19 01:00:19    out     2013-12-19 05:30:19     in    2013-12-19 07:51:19   out       2013-12-19 11:00:19

我猜你想要这样的东西:

SELECT a1.id, a.1status, a1.timestamp, a2.status, a2.timetstamp
FROM timetable a1
LEFT JOIN timetable a2 ON a2.id=a1.id AND a2.status = 'out'
WHERE a1.status = 'in'
让一行只有一个out值对我来说没有任何意义。

试试这个查询

select t1.id,t2.status as IN_Status,t2.timestamp as IN_Time,t3.status as OUT_Stats,t3.timestamp as OUT_Time
  from table1 t1 
   left join table1 t2 on (t1.id=t2.id and t2.status ='in')
   left join table1 t3 on (t1.id=t3.id and t3.status ='out') 
   group by t1.id;
检查示例


问题是??我想把表a选进表结果…:让我试试这个。。谢谢你,谢谢你!!工作只是一种魅力!如果我再添加两列status和timestamp呢?先生,如果你有第三身份,我该怎么办?添加另一个左连接:在a3上左连接时间表a3。id=a1.id和a3.status='status3',并相应地添加您的选择列表:选择a1.id、a.1status、a1.timestamp、a2.status、a2.timetstamp、a3.STATUSTATUS、a3.timestamp,而不是第三个状态。。我是指同一id上的另一组输入和输出记录的另一列2013-12-18 16:23:19输出2013-12-18 17:23:19输出2013-12-18 18:50:19输出2013-12-18 18 18:23:19输出2013-12-18 19:23:19