我对这个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个表 所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)