Jawaban:
UNION
menempatkan garis dari kueri satu sama lain, sementara JOIN
membuat produk kartesius dan mengelompokkannya - operasi yang sama sekali berbeda. Contoh sepele dari UNION
:
mysql> SELECT 23 AS bah
-> UNION
-> SELECT 45 AS bah;
+-----+
| bah |
+-----+
| 23 |
| 45 |
+-----+
2 rows in set (0.00 sec)
contoh sepele yang serupa dari JOIN
:
mysql> SELECT * FROM
-> (SELECT 23 AS bah) AS foo
-> JOIN
-> (SELECT 45 AS bah) AS bar
-> ON (33=33);
+-----+-----+
| foo | bar |
+-----+-----+
| 23 | 45 |
+-----+-----+
1 row in set (0.01 sec)
UNION-JOIN
dan bagaimana saya bisa mencapainya dalam SQL standar? Maria DB memiliki perintah union join
, tetapi database lain tidak. Terima kasih.
Bergabung dan Serikat dapat digunakan untuk menggabungkan data dari satu atau lebih tabel. Perbedaannya terletak pada bagaimana data digabungkan.
Secara sederhana, bergabung menggabungkan data ke dalam kolom baru . Jika dua tabel digabungkan, maka data dari tabel pertama ditampilkan dalam satu set kolom di samping kolom tabel kedua di baris yang sama.
Serikat pekerja menggabungkan data ke dalam baris baru. Jika dua tabel "bersatu" bersama, maka data dari tabel pertama adalah dalam satu set baris, dan data dari tabel kedua di set lain. Baris dalam hasil yang sama.
Berikut ini adalah penggambaran visual dari bergabung. Kolom Tabel A dan B digabungkan menjadi satu hasil.
Setiap baris dalam hasil berisi kolom dari KEDUA tabel A dan B. Baris dibuat ketika kolom dari satu tabel cocok dengan kolom lainnya. Pertandingan ini disebut kondisi bergabung.
Ini membuat penggabungan sangat bagus untuk mencari nilai dan memasukkannya dalam hasil. Ini biasanya merupakan hasil dari denormalisasi (membalikkan normalisasi) dan melibatkan penggunaan kunci asing dalam satu tabel untuk mencari nilai kolom dengan menggunakan kunci primer di tabel lain.
Sekarang bandingkan penggambaran di atas dengan penggabungan. Dalam sebuah serikat, setiap baris dalam hasilnya berasal dari satu tabel ATAU yang lainnya. Dalam gabungan, kolom tidak digabungkan untuk membuat hasil, baris digabungkan.
Gabungan dan gabungan dapat digunakan untuk menggabungkan data dari satu atau lebih tabel ke dalam satu hasil. Mereka berdua pergi tentang cara ini berbeda. Jika gabungan digunakan untuk menggabungkan kolom dari tabel yang berbeda, gabungan digunakan untuk menggabungkan baris.
UNION menggabungkan hasil dari dua atau lebih kueri ke dalam satu set hasil tunggal yang mencakup semua baris yang menjadi milik semua kueri di dalam serikat.
Dengan menggunakan BERGABUNG , Anda dapat mengambil data dari dua tabel atau lebih berdasarkan pada hubungan logis antara tabel. Bergabung menunjukkan bagaimana SQL harus menggunakan data dari satu tabel untuk memilih baris di tabel lain.
Operasi UNION berbeda dari menggunakan BERGABUNG yang menggabungkan kolom dari dua tabel.
Contoh UNION:
SELECT 1 AS [Column1], 2 AS [Column2]
UNION
SELECT 3 AS [Column1], 4 AS [Column2]
Keluaran:
Column1 Column2
-------------------
1 2
3 4
GABUNG Contoh:
SELECT a.Column1, b.Column2 FROM TableA a INNER JOIN TableB b ON a.Id = b.AFKId
Ini akan menampilkan semua baris dari kedua tabel yang kondisinya a.Id = b.AFKId
benar.
Anda mungkin melihat penjelasan skematis yang sama untuk keduanya, tetapi ini benar-benar membingungkan.
Untuk UNION:
Untuk BERGABUNG:
FULL OUTER JOIN
itu sama dengan UNION
, yang memang memiliki perbedaan
Gabung digunakan untuk menampilkan kolom dengan nama yang sama atau berbeda dari tabel yang berbeda. Output yang ditampilkan akan memiliki semua kolom yang ditampilkan secara individual. Artinya, kolom akan disejajarkan di sebelah satu sama lain.
Operator set UNION digunakan untuk menggabungkan data dari dua tabel yang memiliki kolom dengan tipe data yang sama. Ketika UNION dilakukan, data dari kedua tabel akan dikumpulkan dalam satu kolom yang memiliki tipe data yang sama.
Sebagai contoh:
Lihat dua tabel di bawah ini:
Table t1
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
Table t2
manufacturer_id manufacturer
1 ABC Gmbh
2 DEF Co KG
Sekarang untuk melakukan tipe JOIN, query ditunjukkan di bawah ini.
SELECT articleno, article, manufacturer
FROM t1 JOIN t2 ON (t1.manufacturer_id =
t2.manufacturer_id);
articelno article manufacturer
1 hammer ABC GmbH
2 screwdriver DEF Co KG
Itu sebuah join.
UNION berarti Anda harus tabel atau hasil dengan jumlah dan jenis kolom yang sama dan Anda menambahkan ini ke tabel / hasil bersama. Lihat contoh ini:
Table year2006
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
Table year2007
Articleno article price manufacturer_id
1 hammer 6 $ 3
2 screwdriver 7 $ 4
SELECT articleno, article, price, manufactruer_id
FROM year2006
UNION
SELECT articleno, article, price, manufacturer_id
FROM year2007
articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
1 hammer 6 $ 3
2 screwdriver 7 $ 4
Mereka hal yang sangat berbeda.
Sebuah bergabung memungkinkan Anda untuk berhubungan data yang sama dalam tabel yang berbeda.
Serikat pekerja mengembalikan hasil dari dua kueri yang berbeda sebagai satu set rekaman.
Bergabung dan serikat dapat digunakan untuk menggabungkan data dari satu atau lebih tabel. Perbedaannya terletak pada bagaimana data digabungkan.
Secara sederhana, bergabung menggabungkan data ke dalam kolom baru. Jika dua tabel digabungkan, maka data dari tabel pertama ditampilkan dalam satu set kolom di samping kolom tabel kedua di baris yang sama.
Serikat pekerja menggabungkan data ke dalam baris baru. Jika dua tabel "bersatu" bersama, maka data dari tabel pertama adalah dalam satu set baris, dan data dari tabel kedua di set lain. Baris dalam hasil yang sama.
Ingat bahwa penyatuan akan menggabungkan hasil ( SQL Server untuk memastikan) (fitur atau bug?)
select 1 as id, 3 as value
union
select 1 as id, 3 as value
id, nilai
1,3
select * from (select 1 as id, 3 as value) t1 inner join (select 1 as id, 3 as value) t2 on t1.id = t2.id
id, nilai, id, nilai
1,3,1,3
1. Klausa SQL Joins digunakan untuk menggabungkan catatan dari dua atau lebih tabel dalam database. GABUNG adalah sarana untuk menggabungkan bidang dari dua tabel dengan menggunakan nilai yang umum untuk masing-masing.
2. Operator SQL UNION menggabungkan hasil dari dua atau lebih pernyataan SELECT. Setiap pernyataan SELECT dalam UNION harus memiliki jumlah kolom yang sama. Kolom juga harus memiliki tipe data yang serupa. Juga, kolom dalam setiap pernyataan SELECT harus dalam urutan yang sama.
misalnya: pesanan tabel 1 pelanggan / table 2
bergabung dalam:
SELECT ID, NAME, AMOUNT, DATE
DARI PELANGGAN
INNER BERGABUNG PESANAN
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Persatuan:
SELECT ID, NAME, AMOUNT, DATE
DARI PELANGGAN
PESAN GABUNG KIRI
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
PERSATUAN
ID PILIH, NAMA, JUMLAH, TANGGAL DARI PELANGGAN
BERGABUNG DENGAN PESANAN
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Menggunakan UNION
UNION menggabungkan hasil dari dua atau lebih kueri menjadi satu set hasil tunggal yang mencakup semua baris yang menjadi milik semua kueri di dalam serikat.
Contoh UNION: SELECT 121 AS [Kolom1], 221 AS [Kolom2] PERSATUAN SELECT 321 AS [Kolom1], 422 AS [Kolom2]
Keluaran: Kolom1 Kolom2 ------------------- 121 221 321 422
Menggunakan GABUNG
BERGABUNG, Anda dapat mengambil data dari dua tabel atau lebih berdasarkan hubungan logis antara tabel.
GABUNG Contoh: PILIH a.Column1, b.Column2 DARI TblA a INNER GABUNG TblB b PADA a.Id = b.id
Dalam abstrak, keduanya serupa, dalam dua tabel atau set hasil digabungkan, tetapi UNION benar-benar untuk menggabungkan set hasil dengan JUMLAH KOLOM YANG SAMA dengan JENIS-JENIS DATA YANG MENGUMPULKAN KOLOM. STRUKTURnya sama, hanya baris baru yang ditambahkan.
Dalam gabungan, Anda dapat menggabungkan set tabel / hasil dengan struktur apa pun yang mungkin, termasuk gabungan kartesian di mana TIDAK ada kolom bersama / serupa.
Saya suka memikirkan perbedaan umum sebagai: