我正在建立一个网站作为神经系统疾病的诊断辅助工具。它以 html 编码并通过 PHP 与 MySQL 数据库通信。向网站提供信息的主表的结构如下: 该图显示了表结构,其中行代表神经系统疾病,列提供与这些疾病相关的症状信息
上表可以使用以下 MySQL 代码重现:
CREATE TABLE IF NOT EXISTS my_table (
`Condition` VARCHAR(22) CHARACTER SET utf8,
`Diarrhoea` INT,
`Headache` INT,
`Hyporeflexia` INT,
`Hypoaesthesia_Spinothalamic` INT
);
INSERT INTO my_table VALUES
('Abetalipoproteinaemia',1,NULL,1,NULL),
('Caffeine toxicity',1,1,NULL,NULL),
('Vitamin B12 deficiency',NULL,NULL,1,2);
SELECT * FROM my_table;
单元格值如下:
- 如果情况和症状相关,(m,n)=1
- (m,n)=2 如果情况和症状无法关联。此症状的存在排除了该情况作为可能的诊断。
- 如果不存在信息或症状和状况不相关,则(m,n)=null
我正在努力编写一个 SQL 查询,该查询将识别特定条件 (m) 的所有列 (n),其中单元格的值 (m,n) = 2。
到目前为止,我的阅读强调了有关数据透视表的想法(我不知道如何使用它们来解决这个问题)和数据库规范化,我认为这是不可能的,因为我正在运行其他查询在同一张 table 上。
基于上表的示例:
- 患者出现反射减退
- SQL 查询确定这可能是由“无β脂蛋白血症”或“维生素 B12 缺乏症”引起的 - 这一切都已经正常了
- 我想确定任何已识别的病症(无β脂蛋白血症和维生素 B12 缺乏症)是否具有排除诊断的症状(该行中的任何单元格 = 2),并返回该病症所属的任何列(症状)的名称案件。
- 对 SQL 数据库的查询表明,如果存在脊髓丘脑感觉减退,则维生素 B12 缺乏症将被排除在可能的诊断之外 - 这将反馈到 html 显示。
任何帮助将不胜感激 - 感谢您的宝贵时间!
最佳答案
我认为像这样排列数据会更常见 - 对于任何拼写错误或糟糕的术语表示歉意,但如果你支付花生......
syptom condition exclusion
Abetalipoproteinaemia Diarrhoea 0
Abetalipoproteinaemia Hyporeflexia 0
Caffeine toxicity Diarrhoea 0
Caffeine toxicity Headache 0
Vitamin B12 deficiency Hyporeflexia 0
Vitamin B12 deficiency Hypoaesthesia Spinthalamic 1
然后,您将进一步采取一两个步骤,并获得一张症状表、一张情况表以及一张说明哪种症状与哪种情况相关以及如何相关的表。
关于php - 给定行名 (m),在 MySQL 数据库中作为 PHP 查询的一部分,当 (m,n)=x 时查找列名 (n),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56497892/