Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Format gabungan SQL - gabungan dalam bersarang

Untuk keterbacaan, saya menyusun ulang kueri... dimulai dengan level paling atas yang terlihat adalah Tabel1, yang kemudian terkait dengan Tabel3, dan kemudian tabel3 terkait dengan tabel2. Jauh lebih mudah diikuti jika Anda mengikuti rantai hubungan.

Sekarang, untuk menjawab pertanyaan Anda. Anda mendapatkan jumlah besar sebagai hasil dari produk Cartesian. Untuk setiap record pada Tabel1 yang cocok dengan Tabel3 Anda akan memiliki X * Y. Kemudian, untuk setiap kecocokan antara tabel3 dan Tabel2 akan memiliki dampak yang sama... Y * Z... Jadi hasil Anda hanya untuk satu kemungkinan ID di tabel 1 dapat memiliki catatan X * Y * Z.

Ini didasarkan pada tidak mengetahui bagaimana normalisasi atau konten untuk tabel Anda... apakah kuncinya adalah kunci UTAMA atau bukan..

Ex:
Table 1       
DiffKey    Other Val
1          X
1          Y
1          Z

Table 3
DiffKey   Key    Key2  Tbl3 Other
1         2      6     V
1         2      6     X
1         2      6     Y
1         2      6     Z

Table 2
Key    Key2   Other Val
2      6      a
2      6      b
2      6      c
2      6      d
2      6      e

Jadi, Tabel 1 bergabung dengan Tabel 3 akan menghasilkan (dalam skenario ini) dengan 12 catatan (masing-masing dalam 1 bergabung dengan masing-masing dalam 3). Kemudian, semua itu lagi kali setiap catatan yang cocok di tabel 2 (5 catatan)... total 60 ( 3 tbl1 * 4 tbl3 * 5 tbl2 )hitung akan dikembalikan.

Jadi, sekarang, ambil dan kembangkan berdasarkan 1000 catatan Anda dan Anda akan melihat bagaimana struktur yang kacau dapat mencekik seekor sapi (bisa dikatakan demikian) dan membunuh kinerja.

SELECT
      COUNT(*)
   FROM
      Table1 
         INNER JOIN Table3
            ON Table1.DifferentKey = Table3.DifferentKey
            INNER JOIN Table2
               ON Table3.Key =Table2.Key
               AND Table3.Key2 = Table2.Key2 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memeriksa hasil pekerjaan paket SSIS setelah menyelesaikan eksekusinya?

  2. Objek Pendukung Diagram Basis Data tidak dapat Diinstal ... tidak ada pemilik yang valid

  3. Menggunakan PIVOT dan BERGABUNG bersama

  4. Sementara loop di SQL Server 2008 iterasi melalui rentang tanggal dan kemudian INSERT

  5. Bagaimana cara mengaktifkan Pengindeksan Teks Lengkap di SQL Server 2005 Express?