我现在有两张桌子,我正在尝试创建一个包含 patient_id 和 drug_name 列的视图,其中包括每位患者为该患者准备的一组药物可能是过敏的。包括来自 repostedallergies 表的药物,以及从推断性疾病表推断为过敏的其他药物。
CREATE TABLE repostedallergies (
patient_id CHAR(5),
drug_name CHAR(15),
PRIMARY KEY (patient_id, drug_name)
)
CREATE TABLE inferredallergies (
alg CHAR(15),
canbe_alg CHAR(15),
PRIMARY KEY (alg, canbe_alg)
)
我已尝试过serval时间,但它没有成功
CREATE VIEW allergies AS
SELECT DISTINCT r.patient_id, r.drug_name
FROM reportedallergies r, inferredallergies i
WHERE r.drug_name IN (SELECT canbe_alg
FROM inferredallergies i);
是否有其他方法可以将inputallergie表中的drug_name添加到视图中。谢谢!
答案 0 :(得分:0)
CREATE VIEW allergies AS
SELECT r.patient_id, r.drug_name
FROM reportedallergies r
INNER JOIN inferredallergies i ON r.drug_name = i.canbe_alg
GROUP BY r.patient_id, r.drug_name
答案 1 :(得分:0)
从不在FROM
子句中使用逗号。 始终使用正确的显式JOIN
语法。 始终!
在您的情况下,我还认为您需要UNION ALL
来组合两个表中的信息:
CREATE VIEW allergies AS
SELECT r.patient_id, i.canbe_alg as drug_name
FROM reportedallergies r JOIN
inferredallergies i
ON r.drug_name = i.alg
UNION ALL
SELECT r.patient_id, r.drug_name
FROM reportedallergies r;
如果您需要删除重复项,请将UNION ALL
替换为UNION
。