kzen.dev
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
Chris  de Vries
Chris de Vries
Question

Apa perbedaan antara "INNER JOIN &" dan "OUTER JOIN &"?

Juga bagaimana LEFT JOIN, RIGHT JOIN dan FULL JOIN cocok?

4488 2008-09-01T22:36:06+00:00 20
Martin Smith
Martin Smith
Pertanyaan edit 13 Februari 2019 в 8:10
Pemrograman
sql
database
join
outer-join
inner-join
Popular videos
inner joins vs outer joins - inner join left join right join full outer join
inner joins vs outer joins - inner join left join right join full outer join
4 tahun yang lalu
INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN pada SQL
INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN pada SQL
5 tahun yang lalu
SQL Joins: Difference Between Inner/Left/Right/Outer Joins
SQL Joins: Difference Between Inner/Left/Right/Outer Joins
2 tahun yang lalu
Belajar MySQL - Menampilkan Data Dengan INNER JOIN, LEFT JOIN & RIGHT JOIN)
Belajar MySQL - Menampilkan Data Dengan INNER JOIN, LEFT JOIN & RIGHT JOIN)
1 tahun yang lalu
What is the Difference Between an Inner and Outer Join?
What is the Difference Between an Inner and Outer Join?
2 tahun yang lalu
SQL Join
SQL Join
2 tahun yang lalu
Inner vs Outer Joins SQL Server
Inner vs Outer Joins SQL Server
5 tahun yang lalu
Inner Join #16 | MySQL | Bahasa Indonesia
Inner Join #16 | MySQL | Bahasa Indonesia
6 tahun yang lalu
SQL Inner Joins and Outer Joins
SQL Inner Joins and Outer Joins
3 tahun yang lalu
Penggabungan 3 tabel di Mysql menggunakan (Inner Join, Left Join, Right Join)
Penggabungan 3 tabel di Mysql menggunakan (Inner Join, Left Join, Right Join)
4 tahun yang lalu
Tekanan - Hukum Bejana Berhubungan, Pipa U | Fisika 8 SMP
Tekanan - Hukum Bejana Berhubungan, Pipa U | Fisika 8 SMP
1 tahun yang lalu
Struktur dan Fungsi Gap Juntion, Tight Juntion, dan Desmosom
Struktur dan Fungsi Gap Juntion, Tight Juntion, dan Desmosom
2 tahun yang lalu
Workshop Pengolahan Data Statistik:Analisis Inner Model & Outer Model dengan menggunakan Smart PLS
Workshop Pengolahan Data Statistik:Analisis Inner Model & Outer Model dengan menggunakan Smart PLS
2 tahun yang lalu
Tips membedakan Outcome dan Output
Tips membedakan Outcome dan Output
2 tahun yang lalu
CARA TRADING PALING AMAN YANG WAJIB DIKETAHUI TRADER PEMULA
CARA TRADING PALING AMAN YANG WAJIB DIKETAHUI TRADER PEMULA
1 tahun yang lalu
« Sebelumnya
Selanjutnya »
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
Solution / Answer
Mark Harrison
Mark Harrison
1 September 2008 в 10:59
2008-09-01T22:59:34+00:00
Lebih
Sumber
Sunting
#8434994

Dengan asumsi Anda bergabung pada kolom tanpa duplikat, yang merupakan kasus yang sangat umum:

  • Sebuah inner join dari A dan B memberikan hasil dari A berpotongan dengan B, yaitu bagian dalam dari perpotongan diagram Venn.

  • Sebuah outer join dari A dan B memberikan hasil dari A union B, yaitu bagian luar dari union diagram Venn.

Contoh

Misalkan Anda memiliki dua tabel, dengan masing-masing satu kolom, dan data sebagai berikut:

A    B
-    -
1    3
2    4
3    5
4    6

Perhatikan bahwa (1,2) adalah unik untuk A, (3,4) adalah umum, dan (5,6) adalah unik untuk B.

Gabungan dalam

Inner join menggunakan salah satu dari kueri yang setara memberikan perpotongan dari dua tabel, yaitu dua baris yang mereka miliki bersama.

select * from a INNER JOIN b on a.a = b.b;
select a.*, b.*  from a,b where a.a = b.b;

a | b
--+--
3 | 3
4 | 4

Gabungan luar kiri

Gabungan luar kiri akan memberikan semua baris di A, ditambah baris yang sama di B.

select * from a LEFT OUTER JOIN b on a.a = b.b;
select a.*, b.*  from a,b where a.a = b.b(+);

a |  b
--+-----
1 | null
2 | null
3 |    3
4 |    4

Gabungan luar kanan

Gabungan luar kanan akan memberikan semua baris di B, ditambah baris yang sama di A.

select * from a RIGHT OUTER JOIN b on a.a = b.b;
select a.*, b.*  from a,b where a.a(+) = b.b;

a    |  b
-----+----
3    |  3
4    |  4
null |  5
null |  6

Gabungan luar penuh

Gabungan luar penuh akan memberi Anda gabungan A dan B, yaitu semua baris di A dan semua baris di B. Jika sesuatu di A tidak memiliki datum yang sesuai di B, maka bagian B adalah null, dan sebaliknya.

select * from a FULL OUTER JOIN b on a.a = b.b;

 a   |  b
-----+-----
   1 | null
   2 | null
   3 |    3
   4 |    4
null |    6
null |    5
Darryl Hein
Darryl Hein
Jawaban edit 28 September 2017 в 7:52
Venn diagram - Wikipedia
en.wikipedia.org
5959
0
Martin Smith
Martin Smith
13 Desember 2014 в 11:58
2014-12-13T11:58:59+00:00
Lebih
Sumber
Sunting
#8435003

Dalam diagram Venn don't benar-benar melakukannya untuk saya. Mereka don't menunjukkan ada perbedaan antara cross join dan inner join, misalnya, atau lebih umumnya menunjukkan adanya perbedaan antara yang berbeda jenis bergabung dengan predikat atau menyediakan kerangka kerja untuk penalaran tentang bagaimana mereka akan beroperasi. Tidak ada pengganti untuk memahami pengolahan logis dan hal ini relatif mudah untuk memahami pula.

  1. Bayangkan sebuah salib bergabung.
  2. Mengevaluasi on klausul terhadap semua baris dari langkah 1 menjaga mereka di mana predikat mengevaluasi untuk benar
  3. (Untuk bergabung dengan luar saja) tambahkan kembali di luar baris yang hilang di langkah 2. (NB: Dalam praktek query optimizer dapat menemukan cara yang lebih efisien dari eksekusi query dari murni logis keterangan di atas, namun hasil akhir harus sama) I'akan memulai dengan versi animasi dari a full outer join. Penjelasan lebih lanjut berikut.

    Penjelasan

    Sumber Tabel masukkan link description here Pertama mulai dengan CROSS JOIN (ALIAS Cartesian Product). Ini tidak memiliki PADA klausul dan hanya kembali setiap kombinasi dari baris dari dua tabel. A. PILIH Warna, B. Warna DARI SALIB BERGABUNG B masukkan link description here Dalam dan Luar bergabung memiliki "ON" klausul predikat.

  • Inner Join. Mengevaluasi kondisi di "ON" klausul untuk semua baris di kayu salib bergabung dengan hasilnya. Jika benar kembali bergabung dengan barisan. Jika tidak membuangnya.
  • Left Outer Join. Sama seperti inner join, maka untuk setiap baris dalam tabel kiri yang tidak cocok dengan apa-apa output ini dengan nilai-nilai NULL untuk tabel kanan kolom.
  • Right Outer Join. Sama seperti inner join, maka untuk setiap baris dalam tabel kanan yang tidak cocok dengan apa-apa output ini dengan nilai-nilai NULL untuk meninggalkan kolom tabel.
  • Full Outer Join. Sama seperti inner join kemudian melestarikan kiri non dicocokkan baris seperti di left outer join dan right non-baris yang cocok sesuai right outer join.

    Beberapa contoh

    A. PILIH Warna, B. Warna DARI INNER JOIN B ON A. Warna = B. Warna Di atas adalah klasik equi join. Inner Join

    Versi Animasi##

    A. PILIH Warna, B. Warna DARI INNER JOIN B ON A. Warna TIDAK DI ('Hijau','Biru')

    Dalam kondisi join tidak perlu kesetaraan dan kondisi itu tidak perlu referensi dari kolom kedua (atau bahkan keduanya) dari tabel. Mengevaluasi A. Warna TIDAK DI ('Hijau','Biru') pada setiap baris dari salib bergabung kembali. dalam 2 A. PILIH Warna, B. Warna DARI INNER JOIN B ON 1 =1 Kondisi join mengevaluasi ke true untuk semua baris di kayu salib bergabung hasilnya jadi ini adalah sama seperti salib bergabung. Saya tidak't mengulang gambar dari 16 baris lagi.

    A. PILIH Warna, B. Warna DARI LEFT OUTER JOIN B ON A. Warna = B. Warna

    Luar Bergabung logis dievaluasi dengan cara yang sama seperti dalam bergabung kecuali bahwa jika sebuah baris dari tabel kiri (kiri bergabung) tidak bergabung dengan setiap baris dari tangan kanan tabel pada semua hal yang diawetkan dalam hasil dengan NULL nilai-nilai untuk tangan kanan kolom. LOJ

    A. PILIH Warna, B. Warna DARI LEFT OUTER JOIN B ON A. Warna = B. Warna di MANA B. Warna ADALAH NULL

    Ini hanya membatasi hasil sebelumnya hanya menampilkan baris-baris mana B. Warna NULL. Dalam kasus ini, ini akan menjadi baris yang diawetkan karena mereka tidak memiliki pertandingan di tangan kanan tabel dan query mengembalikan tunggal merah-turut tidak cocok dalam tabel B. Hal ini dikenal sebagai anti semi bergabung. Hal ini penting untuk memilih kolom untuk NULL tes yang baik tidak nullable atau untuk yang kondisi join memastikan bahwa setiap NULL nilai-nilai yang akan dikeluarkan dalam rangka untuk pola ini untuk bekerja dengan benar dan menghindari hanya membawa kembali baris yang terjadi untuk memiliki NULL nilai untuk kolom tersebut selain untuk pbb dicocokkan baris. loj null

    A. PILIH Warna, B. Warna DARI RIGHT OUTER JOIN B ON A. Warna = B. Warna

    Right outer join bertindak demikian pula left outer join kecuali mereka melestarikan non-baris yang cocok dari tabel kanan dan null memperpanjang tangan kiri kolom. ROJ

    A. PILIH Warna, B. Warna DARI FULL OUTER JOIN B ON A. Warna = B. Warna

    Full outer join menggabungkan perilaku kiri dan kanan bergabung dan melestarikan non-baris yang cocok dari kedua sisi kiri dan kanan tabel. FOJ

    A. PILIH Warna, B. Warna DARI FULL OUTER JOIN B ON 1 = 0

    Tidak ada baris di kayu salib bergabung match 1=0 predikat. Semua baris dari kedua belah pihak yang diawetkan menggunakan normal outer join aturan dengan NULL dalam kolom dari tabel di sisi lain. FOJ 2

    PILIH MENYATU(A. Warna, B. Warna) SEBAGAI Warna DARI FULL OUTER JOIN B ON 1 = 0

    Dengan minor mengubah untuk permintaan sebelumnya yang bisa mensimulasikan UNION ALL dari dua tabel. UNION ALL

    A. PILIH Warna, B. Warna DARI LEFT OUTER JOIN B ON A. Warna = B. Warna di MANA B. Warna = 'Hijau'

    Perhatikan bahwa WHERE (jika ada) secara logis berjalan setelah bergabung. Salah satu kesalahan umum adalah untuk melakukan left outer join dan kemudian mencakup klausul MANA dengan kondisi pada tabel kanan yang berakhir tidak termasuk non-baris yang cocok. Di atas berakhir melakukan outer join... LOJ ... Dan kemudian "Tempat" klausul berjalan. NULL= 'Hijau' tidak mengevaluasi dengan benar sehingga turut dilestarikan oleh outer join berakhir dibuang (bersama dengan satu biru) secara efektif mengubah bergabung kembali ke dalam satu. LOJtoInner Jika tujuannya adalah untuk hanya menyertakan baris dari B di mana Warna Hijau dan semua baris dari terlepas sintaks yang benar akan

    A. PILIH Warna, B. Warna DARI LEFT OUTER JOIN B ON A. Warna = B. Warna DAN B. Warna = 'Hijau'

    SQL Biola

    Melihat contoh-contoh ini run live di SQLFiddle.com.

Konsta Peltoniemi
Konsta Peltoniemi
Jawaban edit 3 Agustus 2018 в 7:59
676
0
 ajitksharma
ajitksharma
18 Desember 2014 в 6:54
2014-12-18T06:54:55+00:00
Lebih
Sumber
Sunting
#8435004

Bergabung digunakan untuk menggabungkan data dari dua tabel, dengan hasil yang baru, sementara meja. Bergabung dilakukan berdasarkan pada sesuatu yang disebut predikat, yang menentukan kondisi untuk digunakan dalam rangka untuk melakukan join. Perbedaan antara inner join dan outer join adalah bahwa inner join akan kembali hanya baris yang benar-benar sesuai berdasarkan bergabung predikat. Untuk eg - Memungkinkan mempertimbangkan Karyawan dan Lokasi meja:

Inner Join:- Inner join menciptakan baru hasil tabel dengan menggabungkan nilai-nilai kolom dari dua tabel (Karyawan dan Lokasi) berdasarkan bergabung-predikat. Query membandingkan setiap baris Karyawan dengan setiap baris Lokasi untuk menemukan semua pasangan baris yang memenuhi bergabung-predikat. Ketika bergabung-predikat puas dengan mencocokkan nilai non-NULL, kolom nilai untuk setiap pasangan yang cocok dari baris Karyawan dan Lokasi digabungkan menjadi hasil-turut. Berikut SQL untuk bergabung batin akan terlihat seperti:

select  * from employee inner join location on employee.empID = location.empID
OR
select  * from employee, location where employee.empID = location.empID

Sekarang, di sini adalah apa hasil dari menjalankan SQL yang akan terlihat seperti:

Outer Join:- Luar bergabung tidak memerlukan setiap record dalam dua bergabung tabel untuk memiliki catatan yang cocok. Bergabung meja mempertahankan catatan masing-masing—bahkan jika tidak ada yang cocok record yang ada. Luar bergabung membagi lebih lanjut menjadi left outer join dan right outer join, tergantung pada tabel's baris dipertahankan (kiri atau kanan).

Left Outer Join:- Hasil dari left outer join (atau hanya meninggalkan bergabung) untuk tabel Karyawan dan Lokasi selalu berisi semua catatan "kiri" tabel (Karyawan), bahkan jika bergabung-kondisi tidak menemukan catatan yang cocok di "benar" tabel (Lokasi). Berikut adalah apa SQL untuk left outer join akan terlihat seperti, dengan menggunakan tabel di atas:

select  * from employee left outer join location on employee.empID = location.empID;
//Use of outer keyword is optional

Sekarang, di sini adalah apa hasil dari menjalankan SQL ini akan terlihat seperti:

Right Outer Join:- A right outer join (atau kanan bergabung dengan) erat menyerupai left outer join, kecuali dengan pengobatan meja terbalik. Setiap baris dari "benar" tabel (Lokasi) akan muncul di bergabung tabel setidaknya sekali. Jika tidak ada baris pencocokan dari "kiri" tabel (Karyawan) ada, NULL akan muncul di kolom dari Karyawan untuk catatan-catatan yang tidak memiliki pertandingan di Lokasi. Ini adalah apa yang SQL terlihat seperti:

select * from employee right outer join location  on employee.empID = location.empID;
//Use of outer keyword is optional

Dengan menggunakan tabel di atas, kita dapat menunjukkan apa hasilnya himpunan a right outer join akan terlihat seperti:

Full Outer Join:- Full Outer Join atau Penuh Bergabung adalah untuk mempertahankan nonmatching informasi termasuk nonmatching baris dalam hasil yang bergabung, menggunakan full outer join. Ini mencakup semua baris dari tabel kedua, terlepas dari apakah atau tidak tabel lain memiliki nilai pencocokan.

Sumber Gambar

MySQL 8.0 Referensi Manual - Bergabung Dengan Sintaks

Oracle Bergabung dengan operasi

 ajitksharma
ajitksharma
Jawaban edit 6 Agustus 2019 в 1:21
JOIN operations
docs.oracle.com
MySQL :: MySQL 8.0 Reference Manual :: 13.2.10.2 JOIN Clause
dev.mysql.com
160
0
Tushar  Gupta - curioustushar
Tushar Gupta - curioustushar
27 Januari 2014 в 12:16
2014-01-27T12:16:05+00:00
Lebih
Sumber
Sunting
#8435001

Inner Join

Mengambil dicocokkan baris saja, yaitu, Yang berpotongan B.

Enter image description here

SELECT *
FROM dbo.Students S
INNER JOIN dbo.Advisors A
    ON S.Advisor_ID = A.Advisor_ID

Left Outer Join

Memilih semua record dari tabel pertama, dan setiap catatan di kedua meja yang sesuai dengan bergabung kunci.

Enter image description here

SELECT *
FROM dbo.Students S
LEFT JOIN dbo.Advisors A
    ON S.Advisor_ID = A.Advisor_ID

Full Outer Join

Memilih semua record dari kedua tabel, dan catatan dalam pertama meja yang sesuai dengan bergabung kunci.

Enter image description here

SELECT *
FROM dbo.Students S
FULL JOIN dbo.Advisors A
    ON S.Advisor_ID = A.Advisor_ID

Referensi

  • Dalam dan luar bergabung SQL contoh dan Bergabung dengan blok

  • SQL: BERGABUNG

128
0
 vidyadhar
vidyadhar
12 Januari 2013 в 11:07
2013-01-12T11:07:41+00:00
Lebih
Sumber
Sunting
#8434999

Dalam kata-kata sederhana:

An inner join mengambil dicocokkan baris saja.

Sedangkan outer join mengambil sesuai baris dari satu tabel dan semua baris di tabel lain ....hasilnya tergantung pada mana yang anda gunakan:

  • Kiri: Sesuai baris di tabel kanan dan semua baris di tabel kiri

  • Tepat: Sesuai baris di tabel kiri dan semua baris di tabel kanan atau

  • Full: Semua baris di tabel. Itu doesn't peduli jika ada pertandingan atau tidak

108
0
1800 INFORMATION
1800 INFORMATION
1 September 2008 в 10:38
2008-09-01T22:38:43+00:00
Lebih
Sumber
Sunting
#8434992

Gabungan dalam hanya menampilkan baris jika ada catatan yang cocok di sisi lain (kanan) dari gabungan.

Gabungan luar (kiri) menunjukkan baris untuk setiap rekaman di sisi kiri, bahkan jika tidak ada baris yang cocok di sisi lain (kanan) dari gabungan. Jika tidak ada baris yang cocok, kolom-kolom untuk sisi lain (kanan) akan menampilkan NULL.

101
0
Brian Boatright
Brian Boatright
1 September 2008 в 10:47
2008-09-01T22:47:39+00:00
Lebih
Sumber
Sunting
#8434993

Inner join mengharuskan record dengan ID terkait ada dalam tabel yang digabungkan.

Outer join akan mengembalikan record untuk sisi kiri bahkan jika tidak ada record yang ada untuk sisi kanan.

Misalnya, Anda memiliki tabel Orders dan tabel OrderDetails. Mereka dihubungkan oleh "OrderID".

Pesanan

  • OrderID
  • Nama Pelanggan

RincianPesanan

  • OrderDetailID
  • OrderID
  • NamaProduk
  • Qty
  • Harga

Permintaan

SELECT Orders.OrderID, Orders.CustomerName
  FROM Orders 
 INNER JOIN OrderDetails
    ON Orders.OrderID = OrderDetails.OrderID

hanya akan mengembalikan Pesanan yang juga memiliki sesuatu di tabel OrderDetails.

Jika Anda mengubahnya menjadi OUTER LEFT JOIN

SELECT Orders.OrderID, Orders.CustomerName
  FROM Orders 
  LEFT JOIN OrderDetails
    ON Orders.OrderID = OrderDetails.OrderID

maka itu akan mengembalikan catatan dari tabel Pesanan bahkan jika mereka tidak memiliki catatan OrderDetails.

Anda dapat menggunakan ini untuk menemukan Pesanan yang tidak memiliki OrderDetails yang mengindikasikan kemungkinan pesanan yatim piatu dengan menambahkan klausa where seperti WHERE OrderDetails.OrderID IS NULL.

 SergeyUr
SergeyUr
Jawaban edit 10 September 2018 в 8:25
76
0
 Pratik
Pratik
19 Februari 2015 в 4:50
2015-02-19T04:50:21+00:00
Lebih
Sumber
Sunting
#8435005

Dalam kata-kata sederhana :

Inner join -> Mengambil HANYA umum catatan dari orang tua dan anak tabel DIMANA primary key dari tabel Induk pertandingan Foreign key di tabel Anak.

Kiri bergabung ->

pseudo code

1.Take All records from left Table
2.for(each record in right table,) {
    if(Records from left & right table matching on primary & foreign key){
       use their values as it is as result of join at the right side for 2nd table.
    } else {
       put value NULL values in that particular record as result of join at the right side for 2nd table.
    }
  }

Tepat bergabung : kebalikan dari left join . Masukan nama tabel di KIRI BERGABUNG di sisi kanan di Kanan bergabung , anda mendapatkan output yang sama seperti KIRI BERGABUNG.

Outer join : Menampilkan semua record di tabel Kedua Tidak peduli. Jika catatan di Kiri meja yang tidak sesuai ke kanan tabel berdasarkan Primary , Forieign kunci , menggunakan nilai NULL sebagai hasil dari bergabung .

Contoh :

Contoh

Mari kita asumsikan sekarang untuk 2 tabel

1.karyawan , 2.phone_numbers_employees

employees : id , name 

phone_numbers_employees : id , phone_num , emp_id   

Di sini , karyawan tabel Master tabel , phone_numbers_employees adalah tabel anak(mengandung emp_id sebagai foreign key yang menghubungkan karyawan.id jadi anak meja.)

Batin bergabung

Mengambil record dari 2 tabel HANYA JIKA Primary key dari tabel karyawan(id) pertandingan Foreign key dari tabel Anak phone_numbers_employees(emp_id).

Sehingga permintaan akan :

SELECT e.id , e.name , p.phone_num FROM employees AS e INNER JOIN phone_numbers_employees AS p ON e.id = p.emp_id;

Di sini hanya mengambil baris yang cocok pada primary key = kunci asing seperti yang dijelaskan di atas.Di sini non pencocokan baris pada primary key = kunci asing yang dilewati sebagai hasil dari bergabung.

Kiri bergabung :

Kiri bergabung dengan mempertahankan semua baris dari tabel kiri, terlepas dari apakah ada baris yang sesuai pada tabel kanan.

SELECT e.id , e.name , p.phone_num FROM employees AS e LEFT JOIN phone_numbers_employees AS p ON e.id = p.emp_id;

Outer join :

SELECT e.id , e.name , p.phone_num FROM employees AS e OUTER JOIN phone_numbers_employees AS p ON e.id = p.emp_id;

Diagramatically itu terlihat seperti :

Diagram

64
0
Raghu  K Nair
Raghu K Nair
21 Maret 2016 в 10:57
2016-03-21T22:57:39+00:00
Lebih
Sumber
Sunting
#8435010

Ini adalah penjelasan yang baik untuk bergabung

Ini adalah sebuah diagram penjelasan untuk semua jenis bergabung

sumber: http://ssiddique.info/understanding-sql-joins-in-easy-way.html

Understanding SQL Joins Using Pictures - Developer Resources
Finally found a valid explanation on how 'join' works in SQL. What is the difference between an inner join and left, or right join?
ssiddique.info
56
0
 vijikumar
vijikumar
27 September 2012 в 7:33
2012-09-27T07:33:12+00:00
Lebih
Sumber
Sunting
#8434998

Anda menggunakan INNER JOIN untuk mengembalikan semua baris dari tabel kedua di mana ada pertandingan. yaitu Di tabel yang dihasilkan semua baris dan kolom memiliki nilai-nilai.

Di OUTER JOIN tabel yang dihasilkan mungkin memiliki kolom kosong. Outer join dapat berupa KIRI atau KANAN.

LEFT OUTER JOIN mengembalikan semua baris dari tabel pertama, bahkan jika tidak ada pertandingan pada tabel kedua.

RIGHT OUTER JOIN mengembalikan semua baris dari tabel kedua, bahkan jika tidak ada pertandingan pada tabel pertama.

55
0
 naga
naga
2 September 2010 в 9:49
2010-09-02T09:49:28+00:00
Lebih
Sumber
Sunting
#8434997

INNER JOIN membutuhkan setidaknya ada pertandingan dalam membandingkan dua tabel. Misalnya, tabel A dan tabel B yang berarti ٨ B (A persimpangan B).

LEFT OUTER JOIN dan LEFT JOIN yang sama. Ini memberikan semua catatan yang cocok di kedua tabel dan semua kemungkinan dari meja sebelah kiri.

Demikian pula, RIGHT OUTER JOIN dan KANAN BERGABUNG yang sama. Ini memberikan semua catatan yang cocok di kedua tabel dan semua kemungkinan dari tabel kanan.

PENUH BERGABUNG adalah kombinasi dari LEFT OUTER JOIN dan RIGHT OUTER JOIN tanpa duplikasi.

52
0
 shA.t
shA.t
13 April 2015 в 1:07
2015-04-13T13:07:50+00:00
Lebih
Sumber
Sunting
#8435006

Jawabannya adalah dalam arti masing-masing, sehingga dalam hasil.

Catatan : Di SQLite tidak ada RIGHT OUTER JOIN atau FULL OUTER JOIN. Dan juga di MySQL tidak ada FULL OUTER JOIN.

Jawaban saya adalah berdasarkan atas Catatan.

Bila anda memiliki dua tabel seperti ini:

--[table1]               --[table2]
id | name                id | name
---+-------              ---+-------
1  | a1                  1  | a2
2  | b1                  3  | b2

CROSS JOIN / OUTER JOIN : Anda dapat memiliki semua tabel data dengan CROSS JOIN atau hanya dengan , seperti ini:

SELECT * FROM table1, table2
--[OR]
SELECT * FROM table1 CROSS JOIN table2

--[Results:]
id | name | id | name 
---+------+----+------
1  | a1   | 1  | a2
1  | a1   | 3  | b2
2  | b1   | 1  | a2
2  | b1   | 3  | b2

INNER JOIN : Ketika anda ingin menambahkan filter ke atas hasil berdasarkan pada hubungan seperti table1.id = table2.id anda dapat menggunakan INNER JOIN:

SELECT * FROM table1, table2 WHERE table1.id = table2.id
--[OR]
SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id

--[Results:]
id | name | id | name 
---+------+----+------
1  | a1   | 1  | a2

KIRI [OUTER] JOIN : Bila anda ingin memiliki semua baris dari satu tabel di atas hasil -sama dengan hubungan - anda dapat menggunakan LEFT JOIN: (Untuk TEPAT BERGABUNG hanya mengubah tempat dari tabel)

SELECT * FROM table1, table2 WHERE table1.id = table2.id 
UNION ALL
SELECT *, Null, Null FROM table1 WHERE Not table1.id In (SELECT id FROM table2)
--[OR]
SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id

--[Results:]
id | name | id   | name 
---+------+------+------
1  | a1   | 1    | a2
2  | b1   | Null | Null

FULL OUTER JOIN : Bila anda juga ingin memiliki semua baris dari tabel lainnya dalam hasil anda, anda dapat menggunakan FULL OUTER JOIN:

SELECT * FROM table1, table2 WHERE table1.id = table2.id
UNION ALL
SELECT *, Null, Null FROM table1 WHERE Not table1.id In (SELECT id FROM table2)
UNION ALL
SELECT Null, Null, * FROM table2 WHERE Not table2.id In (SELECT id FROM table1)
--[OR] (recommended for SQLite)
SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id
UNION ALL
SELECT * FROM table2 LEFT JOIN table1 ON table2.id = table1.id
WHERE table1.id IS NULL
--[OR]
SELECT * FROM table1 FULL OUTER JOIN table2 On table1.id = table2.id

--[Results:]
id   | name | id   | name 
-----+------+------+------
1    | a1   | 1    | a2
2    | b1   | Null | Null
Null | Null | 3    | b2

Yah, seperti yang anda butuhkan anda memilih masing-masing yang meliputi kebutuhan anda ;).

41
0
Kanwar Singh
Kanwar Singh
11 April 2014 в 9:18
2014-04-11T09:18:07+00:00
Lebih
Sumber
Sunting
#8435002

Inner join.

Join adalah menggabungkan baris dari dua tabel. An inner join upaya untuk mencocokkan dua tabel berdasarkan kriteria yang anda tentukan dalam query, dan hanya akan menampilkan baris yang sesuai. Jika sebuah baris dari tabel pertama dalam bergabung dengan pertandingan dua baris dalam tabel kedua, kemudian dua baris akan dikembalikan dalam hasil. Jika ada baris pada tabel pertama yang tidak sesuai dengan baris kedua, itu tidak dikembalikan; demikian juga, jika ada baris pada tabel kedua yang tidak sesuai dengan baris pertama, itu tidak dikembalikan.

Outer Join.

A kiri bergabung mencoba untuk menemukan pertandingan hingga baris dari tabel pertama untuk baris dalam tabel kedua. Jika tidak dapat menemukan yang cocok, itu akan kembali kolom dari tabel pertama dan meninggalkan kolom dari tabel kedua kosong (null).

33
0
Lajos Veres
Lajos Veres
17 November 2013 в 12:59
2013-11-17T12:59:46+00:00
Lebih
Sumber
Sunting
#8435000

Saya don't melihat banyak rincian tentang kinerja dan optimizer dalam jawaban yang lain.

Kadang-kadang itu baik untuk tahu bahwa hanya INNER JOIN adalah asosiatif yang berarti optimizer paling banyak memiliki pilihan untuk bermain dengan itu. Hal ini dapat menyusun ulang bergabung rangka untuk membuatnya lebih cepat menjaga hasil yang sama. Optimizer dapat menggunakan sebagian besar bergabung mode.

Umumnya itu adalah praktik yang baik untuk mencoba untuk menggunakan INNER JOIN bukan berbeda jenis bergabung. (Tentu saja jika hal ini dimungkinkan mengingat hasil yang diharapkan set.)

Ada beberapa contoh yang baik dan penjelasan tentang hal ini di sini yang aneh asosiatif perilaku:

  • https://stackoverflow.com/questions/20022196/are-left-outer-joins-associative
  • https://stackoverflow.com/questions/9614922/does-the-join-order-matter-in-sql
25
0
 Premraj
Premraj
26 Desember 2017 в 4:49
2017-12-26T16:49:13+00:00
Lebih
Sumber
Sunting
#8435018

  • INNER JOIN paling khas bergabung untuk dua atau lebih tabel. Kembali mencocokkan data pada kedua tabel DI primarykey dan forignkey hubungan.
  • OUTER JOIN adalah sama dengan INNER JOIN, tetapi juga mencakup NULL data pada ResultSet.
  • LEFT JOIN = INNER JOIN + tak Tertandingi data kiri tabel dengan Null pertandingan di kanan meja.
  • BENAR BERGABUNG dengan = INNER JOIN + tak Tertandingi data kan tabel dengan Null pertandingan di sebelah kiri meja.
  • PENUH BERGABUNG = INNER JOIN + tak Tertandingi data pada kedua kanan dan kiri tabel dengan Null pertandingan.
  • Self join adalah bukan kata kunci dalam SQL, ketika sebuah tabel referensi data itu sendiri yang tahu diri bergabung. Menggunakan INNER JOIN dan OUTER JOIN kita dapat menulis diri query join.

Misalnya:

SELECT * 
FROM   tablea a 
       INNER JOIN tableb b 
               ON a.primary_key = b.foreign_key 
       INNER JOIN tablec c 
               ON b.primary_key = c.foreign_key 
 Premraj
Premraj
Jawaban edit 21 Maret 2019 в 10:19
24
0
 S.Serpooshan
S.Serpooshan
8 November 2016 в 12:25
2016-11-08T12:25:02+00:00
Lebih
Sumber
Sunting
#8435014

Dengan algoritma yang tepat untuk INNER JOIN, LEFT/RIGHT OUTER JOIN adalah sebagai berikut:

  1. Mengambil setiap baris dari tabel pertama: a
  2. Mempertimbangkan semua baris dari kedua tabel di samping itu: (a, b[i])
  3. Mengevaluasi ON ... klausul terhadap masing-masing pasangan: PADA( a, b[i] ) = true/false?
  • Ketika kondisi mengevaluasi benar, kembali yang dikombinasikan baris (a, b[i]).
  • Ketika mencapai akhir tabel kedua tanpa setiap pertandingan, dan ini adalah sebuah Outer Join kemudian kembali (virtual) sepasang menggunakan Null untuk semua kolom dari tabel lain: (a, Null) untuk LEFT outer join atau (Null, b) untuk RIGHT outer join. Hal ini untuk memastikan semua baris dari tabel pertama yang ada di hasil akhir.

Catatan: kondisi yang ditentukan dalam ON klausul bisa apa-apa, itu tidak diperlukan untuk menggunakan Primary key (dan anda don't harus selalu merujuk ke Kolom dari tabel kedua)! Misalnya:

  • ... PADA T1.title = T2.judul DAN T1.versi < T2.versi ( => lihat posting ini sebagai contoh penggunaan: Pilih hanya baris-baris dengan nilai max pada kolom)
  • ... PADA T1.y ADALAH NOL
  • ... PADA 1 = 0 (hanya sebagai contoh)

Inner Join vs. Left Outer Join


Catatan: Kiri Bergabung = Left Outer Join, Right Join = Right Outer Join.

 S.Serpooshan
S.Serpooshan
Jawaban edit 11 Oktober 2018 в 2:16
23
0
 onedaywhen
onedaywhen
22 Januari 2016 в 3:23
2016-01-22T15:23:20+00:00
Lebih
Sumber
Sunting
#8435008

Setelah dikritik banyak digemari merah-berbayang diagram Venn, saya pikir itu hanya adil untuk posting saya sendiri mencoba.

Meskipun @Martin Smith's jawaban yang terbaik dari bunch dengan cara lama, hanya menunjukkan kolom kunci dari meja masing-masing, sedangkan saya pikir idealnya non-key kolom juga harus ditunjukkan.

Yang terbaik yang bisa saya lakukan di setengah jam peliharaan diizinkan, aku masih don't pikir itu cukup menunjukkan bahwa nulls yang ada karena tidak adanya nilai-nilai kunci dalam TableB atau yang OUTER JOIN sebenarnya adalah sebuah serikat daripada bergabung:

22
0
Akshay Khale
Akshay Khale
28 April 2016 в 9:10
2016-04-28T09:10:48+00:00
Lebih
Sumber
Sunting
#8435011

Sederhana Definisi

Inner Join: Kembali cocok catatan dari kedua tabel.

Full Outer Join: Mengembalikan cocok dan tak tertandingi catatan dari kedua tabel dengan null tak tertandingi catatan dari Kedua Tabel.

Left Outer Join: Mengembalikan cocok dan tak tertandingi catatan hanya dari tabel di Kiri.

Right Outer Join: Mengembalikan cocok dan tak tertandingi catatan hanya dari tabel di Kanan.

Di-Pendek

Cocok + Kiri Yang Tak Tertandingi + Kanan Yang Tak Tertandingi = Full Outer Join

Cocok + Kiri Yang Tak Tertandingi = Left Outer Join

Cocok + Kanan Yang Tak Tertandingi = Right Outer Join

Cocok Dengan = Inner Join

18
0
 Anands23
Anands23
13 Oktober 2016 в 8:53
2016-10-13T08:53:11+00:00
Lebih
Sumber
Sunting
#8435013

Dalam Istilah Sederhana,

1.INNER JOIN ATAU EQUI JOIN : Mengembalikan resultset yang hanya sesuai dengan kondisi di kedua tabel.

2.OUTER JOIN : Mengembalikan resultset dari semua nilai-nilai dari kedua tabel, bahkan jika ada kondisi yang cocok atau tidak.

3.KIRI BERGABUNG : Mengembalikan resultset dari semua nilai-nilai dari kiri meja dan hanya baris yang sesuai dengan kondisi di meja tepat.

4.TEPAT BERGABUNG : Mengembalikan resultset dari semua nilai-nilai dari kanan meja dan hanya baris yang sesuai dengan kondisi di kiri meja.

5.PENUH BERGABUNG : Penuh Bergabung dan Full outer Join yang sama.

6
0
 Laxmi
Laxmi
10 Juli 2017 в 11:56
2017-07-10T11:56:47+00:00
Lebih
Sumber
Sunting
#8435015

1.Inner Join: disebut Juga Bergabung. Ia mengembalikan baris yang hadir di kedua tabel Kiri, dan kanan meja hanya jika ada pertandingan. Jika tidak, itu kembali nol catatan.

Contoh:

SELECT
  e1.emp_name,
  e2.emp_salary    
FROM emp1 e1
INNER JOIN emp2 e2
  ON e1.emp_id = e2.emp_id

output1

2.Full Outer Join: Juga disebut sebagai Penuh Bergabung. Kembali semua baris hadir di kedua tabel Kiri, dan kanan tabel.

Contoh:

SELECT
  e1.emp_name,
  e2.emp_salary    
FROM emp1 e1
FULL OUTER JOIN emp2 e2
  ON e1.emp_id = e2.emp_id

output2

3.Left Outer join: Atau cukup disebut sebagai Kiri Bergabung. Ia mengembalikan semua baris yang hadir di meja sebelah Kiri dan baris yang cocok dari tabel kanan (jika ada).

4.Right Outer Join: Juga disebut sebagai Hak Bergabung. Kembali baris yang cocok dari tabel kiri (jika ada), dan semua baris yang ada di sebelah Kanan meja.

bergabung

Keuntungan Bergabung

  1. Mengeksekusi lebih cepat.
4
0
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Роман Азаров
Terdaftar 3 hari yang lalu
2
Mansur Zakirov
Terdaftar 6 hari yang lalu
3
Тагир Мамедов
Terdaftar 1 minggu yang lalu
4
Алексей Толманов
Terdaftar 1 minggu yang lalu
5
Valeriu Vodnicear
Terdaftar 2 minggu yang lalu
DA
DE
EL
ES
FI
FR
ID
IT
JA
LV
NL
PL
PT
RU
SK
TR
UK
ZH
© kzen.dev 2023
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi