Php 使用具有相同id的select将选定列值转换为另一行
我正在制作一个简单的时间输入和时间输出系统。。我有三对进线和出线。p_id(个人id) 表Php 使用具有相同id的select将选定列值转换为另一行,php,mysql,select,row,Php,Mysql,Select,Row,我正在制作一个简单的时间输入和时间输出系统。。我有三对进线和出线。p_id(个人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
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升序)?请检查这个简单的例子,也许你有一个想法
我不知道具体如何解决,但我知道您正在寻找的是一个支点: 阅读更多关于:
我认为,使用纯SQL可以得到最好的结果(未经测试,但你会明白这一点):
我很抱歉。。呵呵。。我已经做了一些编辑。。提前谢谢。:)这似乎是或。一般来说,最好是对现有的问题进行编辑,而不是复制它们,以避免读者产生重复的努力。我认为这只是一个左连接。。但我不知道该怎么办无论如何,谢谢你的建议。问题是,对于一个特定的日期/p_id组合,可能会有无限的输入/输出记录,因此查询需要递归。据我所知,MySQL不会这样做。你不能使用左连接,因为resultset上的Collens是动态的。是否需要更改我的表的结构?他们昨天就我的第一部分问题给了我这个答案。请看一看。。我现在的问题是,我想在同一天每人做3对输入/输出记录(另一行表示另一个日期)
p_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 p_id, GROUP_CONCAT(CONCAT(status, " ", timestamp)) inout
FROM TableA
GROUP BY p_id, DATE(timestamp)