Sqlite CREATE VIEW SELECT值基于另一个表中的值

zour9fqk  于 2022-11-15  发布在  SQLite
关注(0)|答案(2)|浏览(185)

我现在有两个表,我正在尝试创建一个包含列Patient_idDrug_name的视图,其中包括每个患者可能对其过敏的药物集。包括报告过敏表中的药物,以及从未知过敏表中推断为过敏的其他药物。

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)
)

我试了好几次,但都不管用

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);

是否有其他方法可以将INFERREDREASTRIGGY表中的DRANSAGE_NAME添加到视图中。

qv7cva1a

qv7cva1a1#

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
ubof19bj

ubof19bj2#

  • 切勿*在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

相关问题