Belajar Union Di Mysql

UNION DI MYSQL
Sql union operator begitulah kita menyebuatnya. Union sendiri berfungsi untuk menggabungkan hasil dari dua atau lebih pernyataan (query) "SELECT".

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


8/Post a Comment/Comments

  1. Mas,
    fungsi union all sudah bekerja dengan baik,
    cara edit dari hasil query menggunakan union all gmn ya ?
    thanks..

    BalasHapus
    Balasan
    1. sama aja mas, cukup tambah where aja, contoh :
      SELECT 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=...;

      Hapus
    2. pakai "Union all dengan where" , pada materi di atas di bahas ko

      Hapus
  2. gak bisa nih Mas,
    sudah 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']

    BalasHapus
    Balasan
    1. ini mas di coba deh,


      SELECT col1, col2 FROM tbl1

      WHERE id=".$_GET['edit_id']

      UNION ALL

      SELECT col1, col2 FROM tbl2
      WHERE id=".$_GET['edit_id']

      Hapus
  3. oia Mas, maksudnya tadi nulis gitu.
    sudah coba kyk giu juga tetap g mau.
    ngambilnya selalu dari tabel pertama saja.

    BalasHapus
  4. Masih g bisa nih mas,
    ato ada script lain yang salah ya..
    bisa g saya kirim sample codenya,
    nanti Mas Cahya yang utak-atik,
    sekalian dibuat tutorial klo jadi he2..

    BalasHapus
  5. Oia Mas,
    klo fungsi edit dari query UNION ALL,
    sistem kerjanya gmn,
    ngambil file edit.php dari tabel/folder yang berbeda ??

    BalasHapus

Posting Komentar

Lebih baru Lebih lama