表结构如下图所示
目标就是列出张三的所有的药品的详细信息

解决方案 »

  1.   

    可以用union,试试这个(我没有测试):
    select Tab1.姓名, Tab2.数量, Tab4.名称 
     from Tab1 
     join Tab2 on Tab1.处方id = Tab2.处方id
     join Tab4 on Tab2.药品id = Tab4.药品id
    union
    select Tab1.姓名, Tab3.数量, Tab5.名称 
     from Tab1 
     join Tab3 on Tab1.处方id = Tab3.处方id
     join Tab5 on Tab3.药品id = Tab5.药品id
      

  2.   

    select * from tab4 where 药品id in (select distinct 药品id from tab2 a left join tab1 b on a.处方ID=b.处方ID)
    union
    select * from tab5 where 药品id in (select distinct 药品id from tab3 c left join tab1 d on c.处方ID=d.处方ID)
      

  3.   

    谢谢楼上的两位大哥 请问那个where写在哪啊?
    就是where 姓名=‘张三’
      

  4.   

    谢谢楼上的两位大哥 请问那个where写在哪啊?
    就是where 姓名=‘张三’
      

  5.   

    select * from Tab1 
    join Tab2 on Tab1.处方id=Tab2.处方id 
    join Tab4 on Tab2.药品id=Tab4.药品id
    where 姓名 ='张三'
    union
    select * from Tab1 
    join Tab3 on Tab1.处方id=Tab3.处方id 
    join Tab5 on Tab3.药品id=Tab5.药品id
    where 姓名 ='张三'