我有三个表 Patients 表:其中包含我的患者姓名,Controls 表:代表可以为每种疾病绘制的 UI 控件,以及 < strong>ControlsValues 表,其中包含为每个患者提交的控件值
让我们有一些数据 Patients 表
|ID | Name |
|-----------|
| 1 | Ara |
| 2 | Sada |
控制表
|ID | Text | Type |
|-----------|----------|
| 1 | age | textbox |
| 2 |alergy| checkbox |
然后是我要查询的 controlsValues 表
|ID | contrlId | value | patientId |
|---------------|----------|-----------|
| 1 | 1 | 23 | 1 |
| 2 | 2 | true | 1 |
| 3 | 1 | 26 | 2 |
| 4 | 2 | false | 2 |
当我想从具有 (controlId=1 AND value=23) 和 (controlId=2 AND value=true)
的 ControlsValues 表中返回该患者时,我的问题就出现了,在这种情况下条件是两行而不是两列,这是不可能的,所以我决定根据 controlId 将行更改为列,但我不知道如何,我已经搜索了 2 天,看到了很多样本,但没有一个帮我解决了问题
最佳答案
试试这个
select * from controlvalues; +----+----------+-------+-----------+ | id | contrlId | value | patientId | +----+----------+-------+-----------+ | 1 | 1 | 23 | 1 | | 2 | 2 | true | 1 | | 3 | 1 | 26 | 2 | | 4 | 2 | false | 2 | | 5 | 1 | 23 | 3 | | 6 | 2 | true | 3 | +----+----------+-------+-----------+ 6 rows in set (0.00 sec)
mysql> SELECT cv1.patientId p1,cv1.contrlId ctrl1, cv1.value val1,cv2.patientId p2,cv2.contrlId ctrl2, cv2.value val2 FROM controlvalues cv1 , controlvalues cv2 WHERE cv1.patientId = cv2.patientId and cv1.contrlId = 2 and cv1.value = 'true' and cv2.contrlId = 1 and cv2.value = '23';
+------+-------+------+------+-------+------+
| p1 | ctrl1 | val1 | p2 | ctrl2 | val2 |
+------+-------+------+------+-------+------+
| 1 | 2 | true | 1 | 1 | 23 |
| 3 | 2 | true | 3 | 1 | 23 |
+------+-------+------+------+-------+------+
2 rows in set (0.00 sec)
关于mysql - 如何将行转换为列并在 Mysql 中查询它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30213731/