Show
Pertimbangkan tabel berikut Jika kami ingin memilih data dari dua bidang yang disorot ( Dan hasilnya akan terlihat seperti ini Dalam contoh di atas, kami menggunakan gabungan dalam untuk menampilkan daftar kota di samping negara tempatnya. Info kota ada di tabel yang berbeda dengan info negara. Oleh karena itu, kami menggabungkan dua tabel menggunakan bidang Berikut diagram dari kedua tabel tersebut (dengan hubungan kunci asing disorot) Kualifikasi LapanganAnda akan melihat bahwa dalam contoh di atas, kami telah memenuhi syarat beberapa nama bidang dengan nama tabelnya masing-masing. Secara khusus, baris terakhir berbunyi Kami melakukan ini karena nama bidangnya sama ( Jika kami tidak memenuhi syarat kolom, MySQL akan memunculkan kesalahan kolom yang ambigu. Itu akan mengatakan sesuatu seperti ini Menggunakan AliasSaat mengkualifikasi nama kolom, Anda dapat menggunakan alias tabel untuk mempersingkat kueri dan menyimpan pengetikan Misalnya, contoh di atas dapat ditulis ulang menjadi ini Gabungan Dalam dengan INNER JOIN0 dan Fungsi AgregatDalam contoh berikut, kami mengubahnya dan memberikan daftar negara dalam satu kolom, dengan jumlah kota yang terdapat di setiap negara di kolom lain Untuk melakukan ini, kami menggunakan fungsi agregat Organisasi menghasilkan dan menganalisis volume data yang tak tertandingi setiap menitnya. Pada artikel ini, kami akan mendemonstrasikan bagaimana kami dapat menggunakan SQL Inner Join untuk membuat kueri dan mengakses data dari beberapa tabel yang menyimpan data yang terus berkembang ini di database SQL SQL BergabungSebelum kita mulai dengan SQL Inner Join, saya ingin memanggil SQL Join di sini. Bergabung adalah klausa yang banyak digunakan di SQL Server pada dasarnya untuk menggabungkan dan mengambil data dari dua atau lebih tabel. Dalam database relasional dunia nyata, data disusun dalam sejumlah besar tabel dan itulah sebabnya, ada kebutuhan konstan untuk menggabungkan beberapa tabel ini berdasarkan hubungan logis di antara mereka. Ada empat tipe dasar Gabungan di SQL Server - Gabungan Dalam, Luar (kiri, kanan, penuh), Diri, dan Silang. Untuk mendapatkan ikhtisar singkat dari semua gabungan ini, saya akan merekomendasikan melalui tautan ini, ikhtisar dan tutorial jenis Gabungan SQL Artikel ini menargetkan semua tentang Gabungan Dalam di SQL Server, jadi mari kita langsung ke sana Definisi SQL Inner JoinKlausa Gabungan Dalam di SQL Server membuat tabel baru (bukan fisik) dengan menggabungkan baris yang memiliki nilai yang cocok dalam dua tabel atau lebih. Penggabungan ini didasarkan pada hubungan logis (atau bidang umum) antara tabel dan digunakan untuk mengambil data yang muncul di kedua tabel Asumsikan, kita memiliki dua tabel, Tabel A dan Tabel B, yang ingin kita gabungkan menggunakan SQL Inner Join. Hasil dari gabungan ini akan menjadi kumpulan hasil baru yang mengembalikan baris yang cocok di kedua tabel ini. Bagian persimpangan berwarna hitam di bawah ini menunjukkan data yang diambil menggunakan Inner Join di SQL Server Sintaks Gabung Dalam SQL ServerDi bawah ini adalah sintaks dasar dari Inner Join PILIH Daftar_kolom Sintaks Gabungan Dalam pada dasarnya membandingkan baris Tabel1 dengan Tabel2 untuk memeriksa apakah ada yang cocok berdasarkan kondisi yang disediakan dalam klausa ON. Saat kondisi Gabung terpenuhi, ia mengembalikan baris yang cocok di kedua tabel dengan kolom yang dipilih di klausa SELECT Klausa SQL Inner Join sama dengan klausa Join dan bekerja dengan cara yang sama jika kita tidak menentukan jenis (INNER) saat menggunakan klausa Join. Singkatnya, Gabungan Dalam adalah kata kunci default untuk Gabung dan keduanya dapat digunakan secara bergantian Catatan – Kami akan menggunakan kata kunci 'Inner' Join di artikel ini demi kejelasan lebih lanjut. Anda dapat menghilangkannya saat menulis pertanyaan Anda dan hanya dapat menggunakan 'Bergabung' juga SQL Inner Join beraksiMari kita coba memahami konsep Inner Join melalui contoh data menarik yang berkaitan dengan Perusahaan Pizza dan distribusi makanannya. Saya akan membuat dua tabel terlebih dahulu – tabel 'PizzaCompany' yang mengelola berbagai cabang gerai Pizza di beberapa kota dan tabel 'Makanan' yang menyimpan detail distribusi makanan di seluruh perusahaan ini. Anda dapat menjalankan kode di bawah ini untuk membuat dan mengisi data ke dalam dua tabel ini. Semua data ini hipotetis dan Anda dapat membuatnya di salah satu database yang ada 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 BUAT TABEL [dbo].[Perusahaan Pizza] ( [IdPerusahaan] [int] IDENTITY(1,1) PRIMARY KEY CLUSTERED, [Nama Perusahaan] [varchar](50) , [CompanyCity] [varchar](30) ) SET IDENTITY_INSERT [dbo].[PizzaCompany] AKTIF; MASUKKAN KELUAR [dbo].[Perusahaan Pizza] ([CompanyId], [CompanyName], [CompanyCity]) VALUES(1,'Dominos','Los Angeles') ; MASUKKAN KELUAR [dbo].[Perusahaan Pizza] ([CompanyId], [CompanyName], [CompanyCity]) VALUES(2,'Pizza Hut','San Francisco') ; MASUKKAN KELUAR [dbo].[Perusahaan Pizza] ([CompanyId], [CompanyName], [CompanyCity]) VALUES(3,'Papa johns','San Diego') ; MASUKKAN KELUAR [dbo].[Perusahaan Pizza] ([CompanyId], [CompanyName], [CompanyCity]) VALUES(4,'Ah Pizz','Fremont') ; MASUKKAN KELUAR [dbo].[Perusahaan Pizza] ([CompanyId], [CompanyName], [CompanyCity]) VALUES(5,'Nino Pizza','Las Vegas') ; MASUKKAN KELUAR [dbo].[Perusahaan Pizza] ([CompanyId], [CompanyName], [CompanyCity]) VALUES(6,'Pizzeria','Boston') ; MASUKKAN KELUAR [dbo].[Perusahaan Pizza] ([CompanyId], [CompanyName], [CompanyCity]) VALUES(7,'chuck e cheese','Chicago') ;
PILIH * DARI Perusahaan Pizza. Seperti inilah tampilan data dalam tabel Perusahaan Pizza Mari buat dan isi tabel Foods sekarang. CompanyID dalam tabel ini adalah kunci asing yang merujuk ke kunci Utama dari tabel PizzaCompany yang dibuat di atas 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 BUAT TABEL [dbo].[Makanan] ( [ItemId] INT PRIMARY KEY CLUSTERED , [ItemName] Varchar(50), [Unit Terjual] int, IDPerusahaan int, ASING ASING KUNCI(ID Perusahaan) REFERENCES PizzaCompany(CompanyID) ) MASUKKAN KELUAR [dbo].[Makanan] ([ItemId], [ItemName], [UnitsSold], [CompanyId]) VALUES(1,'Large Pizza',5,2) MASUKKAN KELUAR [dbo].[Makanan] ([ItemId], [ItemName], [UnitsSold], [CompanyId]) VALUES(2,'Garlic Knots',6,3) MASUKKAN KELUAR [dbo].[Makanan] ([ItemId], [ItemName], [UnitsSold], [CompanyId]) VALUES(3,'Large Pizza',3,3) MASUKKAN KELUAR [dbo].[Makanan] ([ItemId], [ItemName], [UnitsSold], [CompanyId]) VALUES(4,'Medium Pizza',8,4) MASUKKAN KELUAR [dbo].[Makanan] ([ItemId], [ItemName], [UnitsSold], [CompanyId]) VALUES(5,'Breadsticks',7,1) MASUKKAN KELUAR [dbo].[Makanan] ([ItemId], [ItemName], [UnitsSold], [CompanyId]) VALUES(6,'Medium Pizza',11,1) MASUKKAN KELUAR [dbo].[Makanan] ([ItemId], [ItemName], [UnitsSold], [CompanyId]) VALUES(7,'Small Pizza',9,6) MASUKKAN KELUAR [dbo].[Makanan] ([ItemId], [ItemName], [UnitsSold], [CompanyId]) VALUES(8,'Small Pizza',6,7)
PILIH * DARI Makanan Tabel berikut menampilkan data dalam tabel Makanan. Tabel ini menyimpan informasi seperti unit yang terjual per item makanan dan juga outlet pizza (Id Perusahaan) yang mengirimkannya Sekarang, jika kita ingin melihat item dan juga unit yang dijual oleh masing-masing perusahaan pizza, kita dapat menggabungkan kedua tabel ini dengan bantuan klausa gabungan dalam yang digunakan di bidang CompanyId (dalam kasus kita ini memiliki hubungan kunci asing 1 2 3 4 PILIH pz. CompanyCity, pz. Nama Perusahaan, pz. IdPerusahaan AS IdPerusahaanPizza, f . .IDPerusahaan AS IdPerusahaanMakanan, f . .ItemName, f. Unit Terjual DARI Perusahaan Pizza pz INNER GABUNG Makanan f AKTIF pz. IdPerusahaan = f. IdPerusahaan Di bawah ini adalah kumpulan hasil kueri SQL Inner Join di atas. Untuk setiap baris dalam tabel PizzaCompany, Inner Join membandingkan dan menemukan baris yang cocok dalam tabel Foods dan mengembalikan semua baris yang cocok seperti yang ditunjukkan di bawah ini. Dan jika Anda perhatikan, CompanyId = 5 dikecualikan dari hasil kueri, karena tidak cocok dengan tabel Foods Dengan bantuan himpunan hasil di atas, kita dapat mengetahui barang dan juga menghitung barang yang dikirim oleh gerai pizza di berbagai kota. Misalnya, Dominos mengirimkan 7 Breadsticks dan 11 Medium Pizza di Los Angeles SQL Inner Join pada tiga tabelMari kita telusuri lebih dalam gabungan ini dan misalkan tiga taman air (terlihat seperti musim panas) dibuka di negara bagian dan taman air ini mengalihdayakan makanan dari gerai pizza yang disebutkan dalam tabel Perusahaan Pizza Saya akan segera membuat tabel WaterPark dan memuat beberapa data arbitrer ke dalamnya seperti yang ditunjukkan di bawah ini 1 2 3 4 5 6 7 8 9 10 11 12 13 14 BUAT TABEL [dbo].[Taman Air] ( [Lokasi WaterPark] VARCHAR(50), [IdPerusahaan] int, ASING ASING KUNCI(ID Perusahaan) REFERENCES PizzaCompany(CompanyID) ) MASUKKAN KELUAR [dbo].[Taman Air] ([WaterParkLocation], [CompanyId]) VALUES('Street 14',1) MASUKKAN KELUAR [dbo].[Taman Air] ([WaterParkLocation], [CompanyId]) VALUES('Boulevard 2',2) MASUKKAN KELUAR [dbo].[Taman Air] ([WaterParkLocation], [CompanyId]) VALUES('Rogers 54',4) MASUKKAN KELUAR [dbo].[Taman Air] ([WaterParkLocation], [CompanyId]) VALUES('Street 14',3) MASUKKAN KELUAR [dbo].[Taman Air] ([WaterParkLocation], [CompanyId]) VALUES('Rogers 54',5) MASUKKAN KELUAR [dbo].[Taman Air] ([WaterParkLocation], [CompanyId]) VALUES('Boulevard 2',5)
PILIH * DARI WaterPark Dan di bawah ini adalah output dari tabel ini Seperti kata pepatah, gambar itu bernilai ribuan kata. Mari kita segera melihat diagram database dari ketiga tabel ini dengan hubungannya untuk memahaminya dengan lebih baik Sekarang kita akan menyertakan tabel ketiga ini dalam klausa SQL Inner Join untuk melihat bagaimana hal itu akan berdampak pada set hasil. Berdasarkan data di tabel WaterPark, ketiga taman air tersebut telah mengalihdayakan makanan dari semua Perusahaan Pizza kecuali Pizzeria (Id=6) dan chuck e cheese (Id = 7). Jalankan kode di bawah ini untuk melihat semua distribusi makanan di waterpark oleh gerai Pizza 1 2 3 4 5 6 PILIH pz. IdPerusahaan, pz. CompanyCity, pz. NamaPerusahaan,f. ItemName, f. Unit Terjual, w. WaterParkLocation DARI Perusahaan Pizza pz INNER GABUNG Makanan f AKTIF pz.IdPerusahaan = f. IdPerusahaan INNER GABUNG WaterPark w ON w.IdPerusahaan = pz. IdPerusahaan PESAN OLEH pz. IdPerusahaan Berdasarkan ID Perusahaan, SQL Inner Join mencocokkan baris di kedua tabel, Perusahaan Pizza (Tabel 1) dan Makanan (Tabel 2) dan selanjutnya mencari kecocokan di WaterPark (Tabel 3) untuk mengembalikan baris. Seperti yang ditunjukkan di bawah ini, dengan penambahan inner join di WaterPark, CompanyId (6,7 (selain 5)) juga dikecualikan dari hasil akhir yang ditetapkan sebagai kondisi w. CompanyId = pz. CompanyId tidak puas untuk Id (6,7). Ini adalah bagaimana SQL Inner join membantu mengembalikan baris data tertentu dari beberapa tabel Mari gali lebih dalam SQL Inner Join dengan beberapa klausa T-SQL lagi Menggunakan WHERE dengan Inner JoinKami dapat memfilter catatan berdasarkan kondisi yang ditentukan saat SQL Inner Join digunakan dengan klausa WHERE. Asumsikan bahwa kita ingin mendapatkan baris dimana unit terjual lebih dari 6 Dalam kueri berikut, klausa WHERE ditambahkan untuk mengekstrak hasil dengan nilai lebih dari 6 untuk unit yang terjual 1 2 3 4 5 PILIH pz. IdPerusahaan, pz. CompanyCity, pz. NamaPerusahaan,f. ItemName, f. Unit Terjual DARI Perusahaan Pizza pz INNER GABUNG Makanan f AKTIF pz.IdPerusahaan = f. IdPerusahaan DI MANA f. Unit Terjual > 6 PESAN OLEH pz. CompanyCity Jalankan kode di atas dalam SSMS untuk melihat hasil di bawah ini. Empat rekaman tersebut dikembalikan oleh kueri ini Menggunakan Group By dengan Inner JoinSQL Inner Join memungkinkan kita untuk menggunakan klausa Group by bersama dengan fungsi agregat untuk mengelompokkan hasil yang ditetapkan oleh satu atau lebih kolom. Group by bekerja secara konvensional dengan Inner Join pada hasil akhir yang dikembalikan setelah menggabungkan dua tabel atau lebih. Jika Anda tidak terbiasa dengan klausa Group by di SQL, saya sarankan melalui ini untuk memahami konsep ini dengan cepat. Di bawah ini adalah kode yang menggunakan klausa Group By dengan Inner Join 1 2 3 4 5 PILIH pz. CompanyCity, pz. NamaPerusahaan, SUM(f . .Unit Terjual) AS TotalQuantitySold DARI Perusahaan Pizza pz INNER GABUNG Makanan f AKTIF pz.IdPerusahaan = f. IdPerusahaan GROUP OLEH pz. Perusahaan Kota, pz. NamaPerusahaan PESAN OLEH pz. CompanyCity Di sini, kami bermaksud untuk mendapatkan total barang yang dijual oleh setiap perusahaan Pizza yang ada di Kota. Seperti yang Anda lihat di bawah, hasil agregat di kolom 'jumlah total terjual' sebagai 18 (7+11) dan 9 (6+3) masing-masing untuk Los Angeles dan San Diego dihitung Catatan singkat tentang Equi dan Theta JoinSebelum kita menyimpulkan artikel ini, mari kita bahas istilah-istilah, pengembang SQL mungkin mendengar secara sporadis – Equi dan Theta Join Equi GabungSeperti namanya, equi join berisi operator kesetaraan '=' baik dalam klausa Join atau dalam kondisi WHERE. SQL Inner, Left, Right adalah semua equi join ketika operator '=' digunakan sebagai operator pembanding. Biasanya, ketika ada penyebutan SQL Inner Join, itu dianggap sebagai Inner equi Join, dalam situasi yang tidak biasa saja, operator persamaan tidak digunakan Untuk mempermudah, saya akan merujuk ke database sampel AdventureWorksDW2017 dan menjalankan kueri terhadap tabel yang ada untuk mendemonstrasikan bagaimana tampilan equi join 1 2 3 4 PILIH e. EmployeeKey, e. Nama Depan, e. Judul, e. HireDate, fs. SalesAmountQuota DARI DimEmployee e INNER GABUNG FactSalesQuota fs AKTIF e. EmployeeKey = fs. EmployeeKey Gabung Theta (Gabungan non-equi)Non-equi join pada dasarnya kebalikan dari equi-join dan digunakan saat kita join dengan kondisi selain operator ‘=’. Jenis ini jarang digunakan dalam praktek. Di bawah ini adalah contoh penggunaan theta join dengan operator ketimpangan (<) untuk mengevaluasi keuntungan dengan menaksir biaya dan harga jual dalam dua tabel 1 PILIH * DARI Tabel1 T1, Table2 T2 WHERE T1.Biaya Produk < T2. Harga Penjualan KesimpulanSaya harap artikel tentang 'SQL Inner Join' ini memberikan pendekatan yang dapat dipahami ke salah satu klausa penting dan sering digunakan - 'Inner join' di SQL Server untuk menggabungkan beberapa tabel. Jika Anda memiliki pertanyaan, jangan ragu untuk bertanya di bagian komentar di bawah Bisakah kita menggunakan GROUP BY di inner join?Menggunakan Group By dengan Inner Join
. Group by bekerja secara konvensional dengan Inner Join pada hasil akhir yang dikembalikan setelah menggabungkan dua tabel atau lebih. SQL Inner Join permits us to use Group by clause along with aggregate functions to group the result set by one or more columns. Group by works conventionally with Inner Join on the final result returned after joining two or more tables.
Bagaimana cara menggabungkan 3 tabel di MySQL dengan klausa WHERE?Cara menggabungkan 3 tabel atau lebih di SQL . Gabung Sederhana. Pertama, semua tabel digabungkan menggunakan kata kunci JOIN, kemudian digunakan klausa WHERE. DARI Karyawan e JOIN Gaji s JOIN Departemen d. DI MANA e. ID = s. Emp_ID DAN e. . Gabung Bersarang. Pernyataan GABUNG bersarang digunakan dengan kata kunci ON. PILIH e. tanda pengenal, e. Nama, s. Gaji, d Apakah ada inner join di MySQL?Di MySQL, JOIN , CROSS JOIN , dan INNER JOIN adalah persamaan sintaksis (mereka dapat saling menggantikan). Dalam SQL standar, mereka tidak setara. INNER JOIN digunakan dengan klausa ON , CROSS JOIN digunakan sebaliknya. Secara umum, tanda kurung dapat diabaikan dalam ekspresi gabungan yang hanya berisi operasi gabungan dalam.
Bisakah kita menggunakan GROUP BY dengan klausa WHERE di MySQL?GROUP BY adalah salah satu klausa MySQL yang paling berguna. Ini mengelompokkan baris dengan nilai yang sama ke dalam baris ringkasan. Klausa mengembalikan satu baris untuk setiap grup. Dalam kueri, MySQL GROUP BY terletak setelah klausa FROM dan WHERE , tetapi sebelum klausa HAVING , SELECT , DISTINCT , ORDER BY , LIMIT. |