Batin bergabung dengan grup di mysql

INNER JOIN digunakan untuk mengembalikan data dari beberapa tabel. Lebih khusus lagi, INNER JOIN adalah untuk saat Anda hanya tertarik untuk mengembalikan catatan di mana setidaknya ada satu baris di kedua tabel yang cocok dengan kondisi bergabung

Pertimbangkan tabel berikut

Batin bergabung dengan grup di mysql

Jika kami ingin memilih data dari dua bidang yang disorot (country dan city), kami dapat menjalankan kueri berikut (yang menyertakan gabungan dalam)

Dan hasilnya akan terlihat seperti ini

Batin bergabung dengan grup di mysql

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 country_id — karena itu adalah bidang umum di kedua tabel (ini adalah bidang kunci asing)

Berikut diagram dari kedua tabel tersebut (dengan hubungan kunci asing disorot)

Batin bergabung dengan grup di mysql

Kualifikasi Lapangan

Anda akan melihat bahwa dalam contoh di atas, kami telah memenuhi syarat beberapa nama bidang dengan nama tabelnya masing-masing. Secara khusus, baris terakhir berbunyi city.country_id = country.country_id;

Kami melakukan ini karena nama bidangnya sama (country_id). Jika kami tidak memenuhi syarat dengan nama tabel (mis. e. country_id = country_id;) MySQL tidak akan tahu kolom mana yang kami maksud — yang ada di tabel city atau yang ada di tabel country

Jika kami tidak memenuhi syarat kolom, MySQL akan memunculkan kesalahan kolom yang ambigu. Itu akan mengatakan sesuatu seperti ini

Batin bergabung dengan grup di mysql

Menggunakan Alias

Saat 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 Agregat

Dalam 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 INNER JOIN_1 untuk menghitung jumlah kota untuk setiap negara, kemudian klausa INNER JOIN0 untuk mengelompokkan hasil berdasarkan negara

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 Bergabung

Sebelum 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 Join

Klausa 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

Batin bergabung dengan grup di mysql
Batin bergabung dengan grup di mysql

Sintaks Gabung Dalam SQL Server

Di bawah ini adalah sintaks dasar dari Inner Join

PILIH Daftar_kolom
DARI TABEL1
TABEL GABUNGAN DALAM2
DI Tabel1. ColName = Tabel2. ColName

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

Batin bergabung dengan grup di mysql
Batin bergabung dengan grup di mysql

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 beraksi

Mari 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

Batin bergabung dengan grup di mysql
Batin bergabung dengan grup di mysql

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

Batin bergabung dengan grup di mysql
Batin bergabung dengan grup di mysql

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

Batin bergabung dengan grup di mysql
Batin bergabung dengan grup di mysql

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 tabel

Mari 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

Batin bergabung dengan grup di mysql
Batin bergabung dengan grup di mysql

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

Batin bergabung dengan grup di mysql
Batin bergabung dengan grup di mysql

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

Batin bergabung dengan grup di mysql
Batin bergabung dengan grup di mysql

Mari gali lebih dalam SQL Inner Join dengan beberapa klausa T-SQL lagi

Menggunakan WHERE dengan Inner Join

Kami 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

Batin bergabung dengan grup di mysql
Batin bergabung dengan grup di mysql

Menggunakan Group By dengan Inner Join

SQL 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

Batin bergabung dengan grup di mysql
Batin bergabung dengan grup di mysql

Catatan singkat tentang Equi dan Theta Join

Sebelum kita menyimpulkan artikel ini, mari kita bahas istilah-istilah, pengembang SQL mungkin mendengar secara sporadis – Equi dan Theta Join

Equi Gabung

Seperti 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

Batin bergabung dengan grup di mysql
Batin bergabung dengan grup di mysql

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

Kesimpulan

Saya 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.