关于负责的数据链接查询的问题!谢谢!

liyufu86 2007-04-28 10:25:39
现在我有四个表,病人表,病人病历表,医生表,医院表,
每个病人多有一到多个病历,每个病历多有创建病历的医生ID!每个医生多有一个所属医院的医院ID!
我现在手中有一个医院的ID!我想查出所有属于这个医院的医生创建的病历的病人信息(也就是人表里面的数据)!
谢谢!!
...全文
219 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gahade 2007-04-28
  • 打赏
  • 举报
回复
left join 后不能用where关键字关联,要用on关键字关联
gahade 2007-04-28
  • 打赏
  • 举报
回复
java还是初学者,不熟哦!

但好像应该改成这样,你看看.
select a.*" +
" from DPatientInfo a left join " +
" DPatientCaseInfo b on a.nid = b.patient.nid left join " +
" DDoctorInfo c on b.doctor.nid = c.nid left join " +
" DHospitalInfo d on c.医院ID=d.医院ID where c.hospital.nid = 34

楼主java很厉害吧,能交流交流不? 呵呵!
liyufu86 2007-04-28
  • 打赏
  • 举报
回复
在 SQL中可以!!不知道你熟悉java不!!我们的表已经持久化成对象了!!HQL语句是这样!报错

StringBuffer sqlBuffer=new StringBuffer("select a" +
" from DPatientInfo a left join " +
" DPatientCaseInfo b where a.nid = b.patient.nid left join " +
" DDoctorInfo c where b.doctor.nid = c.nid left join " +
" DHospitalInfo d where c.hospital.nid = 34");
gahade 2007-04-28
  • 打赏
  • 举报
回复
因为不知道你实际表中的列名有哪些?所以将医生表c和病人表a的所有列(所有列用*代替)写出来了,你可以将*改为实际医生表和病人表中的字段名称
liyufu86 2007-04-28
  • 打赏
  • 举报
回复
为什么写c.*,a.*

是什么意思?!谢谢了!可以运行!
rookie_one 2007-04-28
  • 打赏
  • 举报
回复
由于这几个表能通过两两的id形成传递,所以就可以通过inner join来取出交集~
rookie_one 2007-04-28
  • 打赏
  • 举报
回复
ls正解~
gahade 2007-04-28
  • 打赏
  • 举报
回复
try

select c.*,a.*
from 病人表 a
inner join 病人病历表 b on a.病人ID=b.病人ID
inner join 医生表 c on b.医生ID=c.医生ID
inner join 医院表 d on c.医院ID=d.医院ID
liyufu86 2007-04-28
  • 打赏
  • 举报
回复
好哈...呵呵!!我的qq:199070955
不过我java不厉害哦...知道一点点...呵呵!!!

left join 后不能用where关键字关联
在我们的hql语句中是可以的哦...

后来我写成这样了!!
select patient from DPatientInfo patient where patient.nid in" +
" ( select pcase.patient from DPatientCaseInfo pcase" +
" where pcase.doctor.hospital.nid="+ ddinfo.getHospital().getNid()+" )");


写的嵌套查询,虽然好像性能慢点!但是能实现,,,毕竟现在没好的办法!呵呵

22,294

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧