Perintah MySQL untuk Menampilkan Data dari Beberapa Tabel

Di dalam suatu RDBMS termasuk MySQL, tentunya sudah menjadi suatu kewajaran jika dalam satu database dapat terdiri dari beberapa tabel. Masing-masing tabel tersebut dapat berhubungan (berelasi) satu sama lain. Relasi antar-tabel dapat berupa relasi 1-1 (one-to-one), 1-M (one-to-many), atau M-N (many-to-many). Sebagai contoh terlihat pada gambar pemodelan data konseptual (class diagram) di bawah ini. Tabel pelanggan berhubungan dengan pesan, pesan dengan barang, dsb.

Pada pembuatan suatu aplikasi, terkadang kita juga memerlukan tampilan data yang tidak hanya berasal dari 1 (satu) tabel, namun bisa dari beberapa tabel sekaligus. Contohnya, dari class diagram di bawah, kita ingin menampilkan nama pelanggan berikut transaksi yang pernah dilakukannya. Dari contoh tersebut, kita harus bisa menggabungkan minimal dua tabel, yaitu pelanggan dan pesan.

Untuk menggabungkan 2 (dua) atau lebih tabel, kita dapat menggunakan bentuk perintah JOIN. Dalam tutorial ini, akan dijelaskan secara bertahap mengenai bagaimana menggabungkan dua tabel atau lebih, terutama untuk menampilkan data yang berasal dari beberapa tabel. Contoh-contoh dalam tutorial ini secara khusus telah dicoba di database MySQL, namun demikian secara umum perintah penggabungan tabel di semua jenis database tidak jauh berbeda alias sama.

Sebelum belajar mengenai perintah penggabungan tabel, perlu dipersiapkan tabel-tabel yang akan dijadikan sebagai bahan latihan dan contoh dalam tutorial ini. Kita akan menggunakan tabel rancangan sistem pemesanan barang (pembelian) sederhana berikut ini. Untuk membuatnya, Anda dapat menggunakan tools seperti PHPMyAdmin dan MySQLFront atau dapat juga melalui command-prompt. Jika diperlukan, pelajari kembali postingan saya sebelumnya mengenai administrasi database MySQL dengan PHPMyAdmin dan juga dasar-dasar perintah SQL. Jangan lupa isikan beberapa contoh data ke tabel-tabel yang sudah Anda buat.

Contoh Class Diagram Sistem Pembelian

Contoh Class Diagram Sistem Pembelian

1. Inner Join

Dengan inner join, tabel akan digabungkan dua arah, sehingga tidak ada data yang NULL di satu sisi. Sebagai contoh, kita akan menggabungkan tabel pelanggan dan pesan dimana kita akan menampilkan daftar pelanggan yang pernah melakukan pemesanan (transaksi). Misalkan isi tabel pelanggan dan pesan adalah sebagai berikut :

Tabel pelanggan (hanya ditampilkan field id_pelanggan, nm_pelanggan dan email)

Contoh isi tabel pelanggan

Contoh isi tabel pelanggan

Tabel pesan.

Contoh isi tabel pesan

Contoh isi tabel pesan

Cara #1. Inner Join dengan WHERE.

Penggabungan dengan klausa WHERE memiliki bentuk umum sebagai berikut:

SELECT tabel1.*, tabel2.* FROM tabel1, tabel2
WHERE tabel1.PK=tabel2.FK;

Berikut ini perintah SQL untuk menggabungkan tabel pelanggan dan pesan:

SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan
FROM pelanggan, pesan
WHERE pelanggan.id_pelanggan=pesan.id_pelanggan;

Hasilnya sebagai berikut:

Hasil Penggabungan 2 Tabel dengan Where

Hasil Penggabungan 2 Tabel dengan WHERE

Pada hasil perintah query di atas terlihat bahwa terdapat 5 (lima) transaksi yang dilakukan oleh 3 (tiga) orang pelanggan. Jika kita lihat kembali isi tabel pelanggan di atas, maka terdapat satu pelanggan yang tidak ditampilkan yaitu yang memiliki id pelanggan P0003. Pelanggan tersebut tidak ditampilkan karena belum pernah melakukan transaksi.

Cara #1. Inner Join dengan klausa INNER JOIN.

Berikut ini bentuk umumnya:

SELECT tabel1.*, tabel2.*
FROM tabel1 INNER JOIN tabel2
ON tabel1.PK=tabel2.FK;

Dan berikut ini perintah SQL penggabungan tabel pelanggan dan pesan.

SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan
FROM pelanggan INNER JOIN pesan
ON pelanggan.id_pelanggan=pesan.id_pelanggan;

Hasilnya akan sama dengan gambar di atas (cara #1).

2. Outer Join

Dengan outer join, tabel akan digabungkan satu arah, sehingga memungkinkan ada data yang NULL (kosong) di satu sisi. Sebagai contoh, kita akan menggabungkan tabel pelanggan dan pesan dimana kita akan menampilkan daftar pelanggan yang pernah melakukan pemesanan (transaksi).

Outer Join terbagi menjadi 2 (dua) yaitu LEFT JOIN dan RIGHT JOIN. Berikut ini bentuk umum dan contohnya:

LEFT JOIN.

Bentuk umum:

SELECT tabel1.*, tabel2.*
FROM tabel1 LEFT JOIN tabel2
ON tabel1.PK=tabel2.FK;

Contoh perintah SQL:

SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan
FROM pelanggan LEFT JOIN pesan
ON pelanggan.id_pelanggan=pesan.id_pelanggan;

Hasilnya:

Hasil Perintah Left Join

Hasil Perintah Left Join

Berbeda dengan hasil sebelumnya (inner join), penggunaan left join akan menampilkan juga data pelanggan dengan id P0003, walaupun pelanggan tersebut belum pernah bertransaksi. Dan pada kolom id_pesan dan tgl_pesan untuk pelanggan P0003 isinya NULL, artinya di tabel kanan (pesan) pelanggan tersebut tidak ada.

RIGHT JOIN

Bentuk umum:

SELECT tabel1.*, tabel2.*
FROM tabel1 RIGHT JOIN tabel2
ON tabel1.PK=tabel2.FK;

Contoh perintah SQL:

SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan
FROM pelanggan RIGHT JOIN pesan
ON pelanggan.id_pelanggan=pesan.id_pelanggan;

Hasilnya:

Hasil Perintah Right Join

Hasil Perintah Right Join

Dengan right join, tabel yang menjadi acuan adalah tabel sebelah kanan (tabel pesan), jadi semua isi tabel pesan akan ditampilkan. Jika data pelanggan tidak ada di tabel pelanggan, maka isi tabel pesan tetap ditampilkan.

Menggabungkan 3 Tabel atau Lebih

Untuk menggabungkan tiga tabel atau lebih, pada dasarnya sama dengan penggabungan 2 (dua) tabel. Sebagai contoh misalnya kita akan menampilkan barang-barang yang dipesan beserta nama barang dan harganya untuk pemesanan dengan nomor 1, sedemikian sehingga hasilnya menjadi sebagai berikut:

Contoh Hasil Penggabungan 3 Tabel

Contoh Hasil Penggabungan 3 Tabel

Bagaimana perintah SQL-nya? Hayoo, siapa bisa? silahkan jawab di bagian komentar tutorial di bawah ini.

Tags:,
Comments
  1. 1216 days ago
    • 1216 days ago
  2. 1212 days ago
  3. 1200 days ago
    • 1200 days ago
  4. 1179 days ago
  5. 1171 days ago
  6. 1125 days ago
  7. 1109 days ago
    • 263 days ago
  8. 1105 days ago
  9. 1096 days ago
  10. 1094 days ago
  11. 1076 days ago
  12. 1063 days ago
  13. 1051 days ago
  14. 1050 days ago
  15. 1002 days ago
  16. 934 days ago
  17. 931 days ago
  18. 916 days ago
  19. 902 days ago
  20. 831 days ago
  21. 831 days ago
    • 333 days ago
  22. 821 days ago
  23. 803 days ago
  24. 799 days ago
  25. 775 days ago
  26. 756 days ago
    • 732 days ago
  27. 754 days ago
    • 732 days ago
  28. 735 days ago
    • 732 days ago
  29. 726 days ago
  30. 706 days ago
  31. 694 days ago
    • 692 days ago
  32. 693 days ago
  33. 677 days ago
  34. 666 days ago
  35. 654 days ago
  36. 651 days ago
    • 651 days ago
  37. 643 days ago
  38. 637 days ago
  39. 631 days ago
  40. 578 days ago
  41. 577 days ago
  42. 569 days ago
    • 569 days ago
      • 568 days ago
        • 567 days ago
  43. 569 days ago
    • 569 days ago
  44. 564 days ago
    • 564 days ago
  45. 551 days ago
  46. 544 days ago
  47. 541 days ago
    • 538 days ago
  48. 536 days ago
  49. 536 days ago
  50. 534 days ago
  51. 534 days ago
  52. 533 days ago
  53. 528 days ago
  54. 500 days ago
  55. 464 days ago
    • 462 days ago
  56. 463 days ago
    • 462 days ago
  57. 461 days ago
  58. 461 days ago
  59. 461 days ago
  60. 461 days ago
  61. 458 days ago
  62. 457 days ago
    • 452 days ago
  63. 450 days ago
  64. 449 days ago
  65. 449 days ago
  66. 445 days ago
    • 445 days ago
  67. 445 days ago
    • 445 days ago
  68. 443 days ago
    • 443 days ago
  69. 431 days ago
  70. 423 days ago
  71. 419 days ago
    • 419 days ago
  72. 419 days ago
    • 418 days ago
  73. 412 days ago
    • 412 days ago
  74. 412 days ago
    • 410 days ago
  75. 405 days ago
    • 405 days ago
      • 405 days ago
  76. 405 days ago
  77. 398 days ago
    • 396 days ago
  78. 393 days ago
  79. 381 days ago
    • 380 days ago
  80. 380 days ago
  81. 366 days ago
  82. 360 days ago
  83. 353 days ago
    • 349 days ago
  84. 350 days ago
    • 349 days ago
  85. 350 days ago
  86. 349 days ago
  87. 342 days ago
  88. 341 days ago
  89. 325 days ago
  90. 323 days ago
  91. 303 days ago
  92. 303 days ago
  93. 300 days ago
  94. 298 days ago
    • 298 days ago
      • 297 days ago
        • 297 days ago
  95. 298 days ago
  96. 289 days ago
    • 288 days ago
  97. 286 days ago
  98. 278 days ago
    • 162 days ago
  99. 269 days ago
  100. 263 days ago
  101. 227 days ago
  102. 210 days ago
    • 162 days ago
  103. 164 days ago
  104. 120 days ago
    • 120 days ago
  105. 110 days ago
    • 110 days ago
  106. 108 days ago
  107. 69 days ago
    • 69 days ago
  108. 49 days ago
    • 48 days ago
  109. 4 days ago

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>