Php 用三列转置mysql中的行
我在mysql中有这个表:Php 用三列转置mysql中的行,php,mysql,database,Php,Mysql,Database,我在mysql中有这个表: id | orden | pacient | per| exam | value | condition | date ---+---------------+----------+----+-------+-------+------------+-------------------- 1 | 201208082001 | 20652598 | 0 | 1017 | 9.00 | 0 | 2012-08-08 09
id | orden | pacient | per| exam | value | condition | date
---+---------------+----------+----+-------+-------+------------+--------------------
1 | 201208082001 | 20652598 | 0 | 1017 | 9.00 | 0 | 2012-08-08 09:28:21
2 | 201208082001 | 20652598 | 0 | 1018 | 4.80 | 0 | 2012-08-08 09:28:21
3 | 201208082001 | 20652598 | 0 | 4104 | 213.00| 0 | 2012-08-08 09:28:21
4 | 201208082002 | 2799592 | 0 | 1017 | 7.70 | 0 | 2012-08-08 09:29:21
5 | 201208082002 | 2799592 | 0 | 1018 | 2.40 | 0 | 2012-08-08 09:29:21
6 | 201208082002 | 2799592 | 0 | 4104 | 43.00 | 0 | 2012-08-08 09:29:21
7 | 201208082003 | 6058327 | 0 | 1017 | 9.10 | 0 | 2012-08-08 09:30:02
8 | 201208082003 | 6058327 | 0 | 1018 | 4.00 | 0 | 2012-08-08 09:30:02
9 | 201208082003 | 6058327 | 0 | 4104 | 840.00| 0 | 2012-08-08 09:30:02
我需要的是:每组三行具有相同的orden
相同的pacient
和不同的检查
和值
。始终存在一个CA
值、一个P
值和一个PTH
值。我需要检查pacient
中有CA>5.5
和P>11
(以及其他一些东西)的表的原始形式的任何地方,很难快速轻松地获得这些信息
id | orden | pacient | per| CA | P | PTH | condition | date
---+---------------+----------+----+-------+------+------- +-----------+--------------------
1 | 201208082001 | 20652598 | 0 | 9.00 | 4.80 | 213.00 | 0 | 2012-08-08 09:28:21
2 | 201208082002 | 2799592 | 0 | 7.70 | 2.40 | 43.00 | 0 | 2012-08-08 09:28:21
3 | 201208082003 | 6058327 | 0 | 9.10 | 4.00 | 840.00 | 0 | 2012-08-08 09:28:21
这个转置表将在视图中显示,我尝试过使用子查询,但速度非常慢,所以。我希望你能帮助我。你没有提供很多关于
CA
、p
和PTH
列中的详细信息,但根据数据,它们看起来分别对应于1017
、1018
和4104
。如果是这样,您可能可以使用带有CASE
表达式的聚合函数将数据从行转换为列:
select orden,
pacient,
per,
max(case when exam = 1017 then value else 0 end) `CA`,
max(case when exam = 1018 then value else 0 end) `P`,
max(case when exam = 4104 then value else 0 end) `PTH`,
`condition`,
date
from yt
group by orden, pacient, per, `condition`, date;
看
此版本不使用任何子查询来获取结果。如果您准确解释第二个表与第一个表的关系,这将非常有用。您是否将
值
列汇总到producdpth
?分组?分组条件是什么?也许你可以用每个表的EXPLAIN语句来显示表的结构。这种方法正是我所需要的。谢谢而且速度非常快。@AxelA.Grazx不客气!