交叉参考TSQL加入

时间:2009-06-09 04:22:20

标签: tsql

说我有四张桌子

1)学习:

  • student_id数据
  • 名字
  • 姓氏

2)联系(将采取最新项目)

  • CONTACT_ID
  • 地址
  • 邮编
  • DateAdded

3)电话(将采取最后三项)

  • CONTACT_ID
  • ******中国
  • DateAdded

4)StudentContactRef

  • student_id数据
  • CONTACT_ID

如何查询此表?我希望将字段显示如下:

  • student_id数据
  • 名字
  • 姓氏
  • 地址
  • 邮编
  • PhoneNumber1
  • PhoneNumber2
  • PhoneNumber3

1 个答案:

答案 0 :(得分:1)

select
    s.Student_ID,
    s.FirstName,
    s.LastName,
    c.Contact_ID,
    c.Address,
    c.ZipCode,
    p.PhoneNumber1,
    p.PhoneNumber2,
    p.PhoneNumber3
from
    Students s
    inner join StudentContactRef r on
        s.Student_ID = r.StudentID
    inner join Contact c on
        r.Contact_ID = c.Contact_ID
    inner join
        (select top 3 Contact_ID, PhoneNumber from Phone 
         pivot (PhoneNumber for PhoneNumber IN 
             (PhoneNumber1, PhoneNumber2, PhoneNumber3) 
         where Contact_ID = r.Contact_ID order by DateAdded desc) p on
        r.Contact_ID = p.Contact_ID

更新:那应该可以帮到你找到你想要的东西!