-1

我现在有两个表,我正在尝试创建一个包含患者 ID 和药物名称列的视图其中包括每个患者的一组患者可能过敏的药物。包括来自repostedallergies表的药物,以及其他从inferredallergies 表中推断为过敏的药物

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

有没有其他方法可以将来自 inferredallergie 表的 drug_name 添加到视图中。谢谢!

4

2 回答 2

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
于 2016-10-06T03:27:22.353 回答
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 ALLUNION

于 2016-10-06T03:28:32.783 回答