Перекрестная ссылка TSQL Join - PullRequest
1 голос
/ 09 июня 2009

Скажите, у меня есть четыре стола

1) Студенц:

  • student_id
  • Имя
  • Фамилия

2) Контакт (Возьму последний товар)

  • Contact_ID
  • Адрес
  • ZipCode
  • DateAdded

3) Телефон (возьму последние три предмета)

  • Contact_ID
  • PhoneNumber
  • DateAdded

4) StudentContactRef

  • student_id
  • Contact_ID

Как я могу запросить эту таблицу? Я хочу иметь поля, как показано ниже:

  • student_id
  • Имя
  • Фамилия
  • Адрес
  • ZipCode
  • PhoneNumber1
  • PhoneNumber2
  • PhoneNumber3

1 Ответ

1 голос
/ 09 июня 2009
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

Обновление: это должно дать вам то, что вы ищете!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...