sql - 如何修复 SQL 设计
问题描述
我正在研究一个医疗软件。该软件向患者询问有关其症状的问题,并从中确定可能的病状。我的研究涉及将软件发现的症状和病理与医院的症状和病理进行比较。
为了让我的工作更轻松,我决定在 netbeans 8.2 上用 javadb 创建的数据库中输入数据。
但似乎我做错了什么,因为我的陈述不起作用。
我提前感谢任何愿意花时间帮助我的人。
SQL设计:
Create table Patients(
nip varchar(32) primary key,
sexe varchar(8) not null,
age int not null,
dateArrivee timestamp not null,
constraint ck_sexe check(sexe='Male' or sexe='Female'),
constraint ck_age check (age>=0)
);
Create table Symptoms(
symptomID int primary key generated always as identity (start with 1,
increment by 1),
nip varchar(32) not null,
symptom varchar(64),
origin varchar(16) not null,
foreign key (nip) references Patients(nip),
constraint ck_origin check (origin='SOFTWARE' or origin='HOSPITAL')
);
Create table Pathologies(
pathologyID int primary key generated always as identity (start with 1,
increment by 1),
nip varchar(32) not null,
pathology varchar(64),
origin varchar(16) not null,
foreign key (nip) references Patients(nip),
constraint ck_origin check (origin='SOFTWARE' or origin='HOSPITAL')
);
输入的值:
Insert into Patients values ('001','Male', 25, '2019-05-27 14:00:00');
Insert into Patients values ('002', 'Female', 30, '2019-05-26 15:00:00');
Insert into Symptoms values (, '001', 'Headache', 'SOFTWARE');
Insert into Pathologies values (,'001', 'Fever', 'SOFTWARE');
Insert into Symptoms values (,'001', 'Stomache', 'HOSTPITAL');
Insert into Pathologies values (, '001', 'Gastro-enteritis', 'HOSPITAL');
Insert into Symptoms values(,'002', 'Headache', 'SOFTWARE');
Insert into Pathologies values (,'002', 'Unknow', 'SOFTWARE');
SQL 语句:
Select *
from (Patients inner join
Symptoms
on Patients.nip = Symptoms.nip
) inner join
Pathologies
on Symptoms.nip = Pathologies.nip
where Symptoms.origin = 'MEDVIR' and
Pathologies.origin = 'MEDVIR';
很抱歉我忘了把我得到的错误。
SQL设计:
首先我有一个关于 auto_incrementation 的错误,甚至认为这是一个好方法。它说“生成”附近的语法不正确。
输入的值:
这里我有一个关于逗号(',')附近语法错误的错误。
SQL 语句:
最后我有一个错误说对象'Patients'不可用。
解决方案
如果我没记错的话,您正在尝试获取 'Origin' = 'MEDVIR' 的条目虽然,您的插入语句都没有 Origin 为 'MEDVIR'
请检查下面,
Select *
from (Patients inner join
Symptoms
on Patients.nip = Symptoms.nip
) inner join
Pathologies
on Symptoms.nip = Pathologies.nip
where Symptoms.origin IN ('SOFTWARE', 'HOSPITAL') and
Pathologies.origin IN ('SOFTWARE', 'HOSPITAL');
此外,您的某些 INSERT 语句在值之前有一个额外的逗号,这会导致语法错误。
推荐阅读
- laravel - Laravel Left join 查询解释
- javascript - 使用 JS 创建按钮,在创建时保持变量
- .net - 应用程序主机助手服务在尝试删除历史记录时遇到错误 Windows 2019
- kubernetes - kubernetes gcp 缓存旧镜像
- java - Jpa 不更新数据
- azure - Azure Active Directory 在设置提示 = 同意后需要管理员批准
- .net-core - Azure Devops + Coverlet + SonarQube 显示 0%
- python - 如何使用`pip`搜索所有以“truffle”开头的Python包?
- c# - c# 控制器中需要的标识符
- c# - 错误结束可观察流的正确方法