Referensi Silang Gabung TSQL

Katakanlah saya punya Empat meja

1) Pelajar:

  • Identitas Siswa
  • Nama depan
  • Nama keluarga

2) Kontak (Akan mengambil item terbaru)

  • Kontak_ID
  • Alamat
  • Kode Pos
  • Tanggal Ditambahkan

3) Telepon (Akan mengambil tiga item terakhir)

  • Kontak_ID
  • Nomor telepon
  • Tanggal Ditambahkan

4) Referensi Kontak Siswa

  • Identitas Siswa
  • Kontak_ID

Bagaimana saya bisa menanyakan tabel ini? Saya ingin memiliki bidang seperti yang ditunjukkan di bawah ini:

  • Identitas Siswa
  • Nama depan
  • Nama keluarga
  • Alamat
  • Kode Pos
  • Nomor Telepon1
  • Nomor Telepon2
  • Nomor Telepon3

person Bill Daugherty    schedule 09.06.2009    source sumber
comment
Tabel Anda akan lebih mudah untuk ditanyakan jika Anda dapat membuat Telepon memiliki Phone_Contact_ID yang berbeda dari Contact_ID... atau jika Anda dapat menambahkan kolom 'type' ke tabel StudentContactRef untuk menunjukkan apakah Anda menautkan ke Kontak atau Nomor telepon   -  person John Fiala    schedule 09.06.2009


Jawaban (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

Pembaruan: Itu akan memberi Anda apa yang Anda cari!

person Eric    schedule 09.06.2009