mysql - 如何通过 mysql 检索所有患者的体温信息?

标签 mysql

我的数据库中有三张表,一张用于患者,一张用于体温,还有一张包含患者 ID 和体温 ID 作为主键的表。

病历台;

+----+------+--------+------------+
| id | name | gender | birth      |
+----+------+--------+------------+
|  1 | Hind | F      | 2015-01-01 |
|  2 | Saad | M      | 2016-01-01 |
+----+------+--------+------------+

患者信息表:

+------+------+
| id_t | id_p |
+------+------+
|    1 |    1 |
|    1 |    2 |
|    2 |    3 |
|    2 |    4 |
+------+------+

温度表:

+----+-------------+
| id | temperature |
+----+-------------+
|  1 |        37.9 |
|  2 |          37 |
|  3 |          38 |
|  4 |        38.4 |
+----+-------------+

所以我想要的是检索所有患者的体温,这就是我所做的:

mysql> SELECT p.*, t.* FROM patient p INNER JOIN patient_info pi ON pi.id_p = p.id INNER JOIN temperature t ON t.id = pi.id_t;
+----+------+--------+------------+----+-------------+
| id | name | gender | birth      | id | temperature |
+----+------+--------+------------+----+-------------+
|  1 | Hind | F      | 2015-01-01 |  1 |        37.9 |
|  2 | Saad | M      | 2016-01-01 |  1 |        37.9 |
+----+------+--------+------------+----+-------------+

但这不是我想要的,我需要知道 Hind 和 Saad 的所有温度 谢谢大家

最佳答案

我希望你真的在追求这样的东西——尽管将温度存储在一个单独的表中真的没有意义......

DROP TABLE IF EXISTS patient;

CREATE TABLE patient
(patient_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,name VARCHAR(12) NOT NULL
,gender CHAR(1) NOT NULL
,dob DATE NOT NULL
);

INSERT INTO patient VALUES
(101 ,'Hind','F','2015-01-01'),
(102 ,'Saad','M','2016-01-01');


DROP TABLE IF EXISTS patient_temperature;

CREATE TABLE patient_temperature
(patient_id INT NOT NULL
,temperature_id INT NOT NULL
,PRIMARY KEY(patient_id,temperature_id)
);

INSERT INTO patient_temperature VALUES
(101,1),
(101,2),
(102,3),
(102,4);

DROP TABLE IF EXISTS temperature;

CREATE TABLE temperature
(temperature_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,temperature DECIMAL(5,2) NOT NULL
);

INSERT INTO temperature VALUES
(1,37.9),
(2,37),
(3,38),
(4,38.4);

SELECT p.*
     , t.*
  FROM patient p 
  JOIN patient_temperature pt 
    ON pt.patient_id = p.patient_id 
  JOIN temperature t 
    ON t.temperature_id = pt.temperature_id;
+------------+------+--------+------------+----------------+-------------+
| patient_id | name | gender | dob        | temperature_id | temperature |
+------------+------+--------+------------+----------------+-------------+
|        101 | Hind | F      | 2015-01-01 |              1 |       37.90 |
|        101 | Hind | F      | 2015-01-01 |              2 |       37.00 |
|        102 | Saad | M      | 2016-01-01 |              3 |       38.00 |
|        102 | Saad | M      | 2016-01-01 |              4 |       38.40 |
+------------+------+--------+------------+----------------+-------------+

关于mysql - 如何通过 mysql 检索所有患者的体温信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40593349/

相关文章:

mysql - Rails MySQL 连接问题

PHP脚本无法格式化日期

mysql - SELECT 所有数据库中列的总和

php - 如何使用ajax获取从php派生的选择值

php - 如何使用 php 和 mysql 成功转义撇号

mysql - 如何使用Sql触发器列出表中的所有列

mysql - mysql 上的 ER_PARSE_ERROR Sequelize 字符串数据类型数组

java - 以批处理模式从 MySQL 中检索多行的 auto_increment 值

php - 提交表单后出现错误时间 Php Mysql Strtotime

mysql - TYPO3 - MySQL - 结合 INSERT 和 SELECT