Kondisi yang harus di penuhi untuk menggunakan UNION di MYSQL adalah :
- Memiliki jumlah kolom yang sama.
- Kolom harus memiliki tipe data yang sama.
- Kolom di dalam pernyataan (query) select urutannya harus sama.
Kalau masih bingung dengan apa yang dimaksud dengan kondisi di atas. mari kita simak strukture dari query union di bawah ini.
SELECT nama_kolom1,nama_kolom2,nama_kolom3 FROM tabel1
UNION
SELECT nama_kolom1,nama_kolom2,nama_kolom3 FROM tabel2;
Apakah strukture di atas sudah memenuhi kondisi di atas ?
simak penjelasan di bawah ini untuk mengetahui jawabannya.
- Mengingat pada kondisi pertama, bahwa jumlah kolom harus sama. Dan pada query di atas terdapat 3 buah kolom yang sama pada masing-masing tabelnya. Kolom di atas bisa lebih dari 3 buah, di atas hanyalah sebuah sampel.
- Kondisi kedua, bahwa kolom harus memiliki tipe data yang sama. Secara logika, mungkin kalau nama kolomnya sama pasti kemungkinan besar tipe datanyapun akan sama juga. Dan itu adalah salah satu kebiasaan saya, kalau ada nama kolom yang sama saya biasanya selalu memakai tipe data yang sama juga :) .
- Kemudian di kondisi yang terakhir, bahwa kolom di dalam pernyataan (query) select urutannya harus sama.
Jadi kira-kira apa jawaban anda ? :)
Secara default, operator union hanya memilih nilai data yang berbeda untuk di tampilkan. jadi itu artinya union tidak bisa menampilkan nilai data yang duplikat (ganda) secara default. Tetapi union juga memungkinkan untuk menampilkan hasil nilai data duplikat (ganda). caranya dengan menggunakan query UNION ALL.
Query UNION ALL :
SELECT nama_kolom1,nama_kolom2,nama_kolom3 FROM tabel1
UNION ALL
SELECT nama_kolom1,nama_kolom2,nama_kolom3 FROM tabel2;
Demo
Nama Tabel : Pelanggan
ID | NamaPelanggan | NamaKontak | Alamat | Kota | KodePos | Negara |
---|---|---|---|---|---|---|
1 | Dias | Dias Cahya | Orchard | Orchard | 11111 | Singapur |
2 | Cahya | Cahya Dy | Jabar | Kuningan | 22222 | Indo |
3 | Mentari | Martha Mentari | Kalimantan | Pontianak | 33333 | Indo |
Nama Tabel : Suppliers
ID | NamaSupplier | NamaKontak | Alamat | Kota | KodePos | Negara |
---|---|---|---|---|---|---|
1 | Dias | Dias Cahya | Siglap | Siglap | 11111 | Singapur |
2 | Cahya | Cahya Dy | Jabar | Kuningan | 22222 | Indo |
3 | Mentari | Martha Mentari | Kalimantan | Pontianak | 33333 | Indo |
Contoh query untuk menampilkan nilai kota yang berbeda dari tabel pelanggan dan suppliers.
SELECT Kota FROM Pelanggan
UNION
SELECT Kota Suppliers
ORDER BY Kota;
Contoh query menggunakan UNION ALL untuk menampilkan semua nilai kota dari tabel pelanggan dan suppliers.
SELECT Kota FROM Pelanggan
UNION ALL
SELECT Kota Suppliers
ORDER BY Kota;
Union all dengan where
Contoh query menggunakan UNION ALL untuk menampilkan semua nilai kota yang ada di negara indonesia dari tabel pelanggan dan suppliers.
SELECT Kota, Negara FROM Pelanggan
WHERE Negara='Indo'
UNION ALL
SELECT Kota, Negara FROM Suppliers
WHERE Negara='Indo'
ORDER BY Kota;
Mungkin sekian dulu pembahasan saya tentang union di mysql :)
Terimakasih
Mas,
BalasHapusfungsi union all sudah bekerja dengan baik,
cara edit dari hasil query menggunakan union all gmn ya ?
thanks..
sama aja mas, cukup tambah where aja, contoh :
HapusSELECT nama_kolom1,nama_kolom2,nama_kolom3 FROM tabel1 where id_table1=...
UNION ALL
SELECT nama_kolom1,nama_kolom2,nama_kolom3 FROM tabel2 where id_table2=...;
pakai "Union all dengan where" , pada materi di atas di bahas ko
Hapusgak bisa nih Mas,
BalasHapussudah coba ganti-ganti kodenya g bisa juga,
SELECT col1, col2 FROM tbl1
UNION ALL
WHERE id=".$_GET['edit_id']
SELECT col1, col2 FROM tbl2
WHERE id=".$_GET['edit_id']
ini mas di coba deh,
HapusSELECT col1, col2 FROM tbl1
WHERE id=".$_GET['edit_id']
UNION ALL
SELECT col1, col2 FROM tbl2
WHERE id=".$_GET['edit_id']
oia Mas, maksudnya tadi nulis gitu.
BalasHapussudah coba kyk giu juga tetap g mau.
ngambilnya selalu dari tabel pertama saja.
Masih g bisa nih mas,
BalasHapusato ada script lain yang salah ya..
bisa g saya kirim sample codenya,
nanti Mas Cahya yang utak-atik,
sekalian dibuat tutorial klo jadi he2..
Oia Mas,
BalasHapusklo fungsi edit dari query UNION ALL,
sistem kerjanya gmn,
ngambil file edit.php dari tabel/folder yang berbeda ??
Posting Komentar