Sqlite根据另一个表中的值创建视图选择值

时间:2016-10-06 03:23:43

标签: sql sqlite two-columns create-view

我现在有两张桌子,我正在尝试创建一个包含 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添加到视图中。谢谢!

2 个答案:

答案 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