mysql-连接具有相互良好引用的4个表

mysql-连接具有相互良好引用的4个表,第1张

概述我对这个MYSQL查询视而不见.这不应该那么难,但我确实可以取得结果,但不是我想要的结果.非常感谢你的帮助!医生dctr_id | dctr_name | ... -------------------------- 60 | Bezant 造访vist_id | dctr_id| prsnl_id | visit_date | ... -----

我对这个MYSQL查询视而不见.这不应该那么难,但我确实可以取得结果,但不是我想要的结果.非常感谢你的帮助!

医生

dctr_ID | dctr_name | ...--------------------------60      | Bezant

造访

vist_ID | dctr_ID| prsnl_ID | visit_date | ...-----------------------------------------------1       | 60      | 86      | 2018-12-31

意外

acc_ID | dctr_ID | prsnl_ID| acc_date | ...--------------------------------------------51     | 60      | 86      | 2018-12-2555     | 60      | 86      | 2018-12-20

人物

prsnl_ID | prsnl_name | ...---------------------------79       | test_name286       | test_name

我尝试了各种查询,但没有一个能解决问题.独特,分组,…

我得到这个结果:

dctr_ID | dctr_name | visit_ID | visit_date | acc_ID | acc_date | prsnl_ID | prsnl_name-----------------------------------------------------------------------------------------60      | Bezant    | 1        | 2018-12-31 | 51     | 2018-12-25 | 79     | test_name260      | Bezant    | 1        | 2018-12-31 | 51     | 2018-12-25 | 79     | test_name260      | Bezant    | 1        | 2018-12-31 | 55     | 2018-12-20 | 86     | test_name1SELECT disTINCT dctr.dctr_ID,dctr.dctr_name,vst.visit_ID,vst.visit_date,acc.acc_ID,acc.acc_date,prsnl.prsnl_ID,prsnl.name            FROM doctor dctr          left           JOIN visits vst            ON vst.dctr_ID = dctr.dctr_ID          left           JOIN accIDents acc            ON acc.dctr_ID = dctr.dctr_ID          left           JOIN personell prsnl             ON prsnl.prsnl_ID = vst.prsnl_ID             OR prsnl.prsnl_ID = acc.prsnl_ID         WHERE dctr.dctr_ID = 60

我想得到以下结果:

dctr_ID | dctr_name | visit_ID | visit_date | acc_ID | acc_date | prsnl_ID | prsnl_name-----------------------------------------------------------------------------------------60      | Bezant    | 1        | 2018-12-31 | NulL   | NulL       | 79     | test_name260      | Bezant    | NulL     | NulL       | 51     | 2018-12-25 | 79     | test_name260      | Bezant    | NulL     | NulL       | 55     | 2018-12-20 | 86     | test_name1
最佳答案为了获得访问或意外的结果,您需要将这两个表联合在一起,为该表中没有对应数据的列选择NulL值(例如,访问中的acc_ID).然后可以将这些结果加入到医生和人员表中,以获取每次访问/意外的相关医生和人员信息:

SELECT d.dctr_ID,d.dctr_name,i.visit_ID,i.visit_date,i.acc_ID,i.acc_date,p.prsnl_ID,p.prsnl_nameFROM doctor dleft JOIN (SELECT dctr_ID,visit_ID,prsnl_ID,visit_date,NulL AS acc_ID,NulL AS acc_date           FROM visits           UNION           SELECT dctr_ID,NulL,acc_ID,acc_date           FROM accIDents) i  ON i.dctr_ID = d.dctr_IDleft JOIN personell p ON p.prsnl_ID = i.prsnl_IDWHERE d.dctr_ID = 60ORDER BY i.visit_ID,i.acc_ID

输出:

dctr_ID     dctr_name   visit_ID    visit_date  acc_ID  acc_date    prsnl_ID    prsnl_name60          Bezant      1           2018-12-31  (null)  (null)      79          test_name260          Bezant      (null)      (null)      51      2018-12-25  79          test_name260          Bezant      (null)      (null)      55      2018-12-20  86          test_name

Demo on SQLFiddle 总结

以上是内存溢出为你收集整理的mysql-连接具有相互良好引用的4个表 全部内容,希望文章能够帮你解决mysql-连接具有相互良好引用的4个表 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1165964.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存