People Innovation Excellence
 
Feature Image

SubQuery, Aggregate dan Left Join

Pada artikel ini, kita akan membahas mengenai subQuery di dalam from clause. Subquery akan mengembalikan sebuah tabel sementara yang dapat kita gunakan untuk proses query berikutnya. Berikut ini adalah contoh kasus penggunaan subquery.

Diberikan table MsMember berikut ini :

fd - 1

Tabel tersebut menyimpan data setiap member beserta upline dari setiap member tersebut. bagaimana jika dari tabel di atas, kita ingin menampilkan data seperti ini :

fd - 2

Dari tabel di atas, kita ingin menampilkan berapa jumlah downline yang dimiliki oleh setiap member. Untuk member yang tidak memiliki downline, maka akan tampil nilai 0.  Untuk mengatasi hal ini, kita dapat menggunakan subquery, aggregate (count function) dan ifnull seperti di bawah ini :

fd - 3

Untuk subquery, saya melakukan select kepada msmember dengan menggunakan fungsi count. Hal ini berarti program akan menghitung total idupline yang ada. Kemudian saya juga mengambil field upline pada subquery ini. Field ini digunakan untuk menyamakan id dengan tabel msmember yang saya select sebelumnya.

Hal yang perlu diperhatikan berikutnya adalah karena kita menggunakan aggregate, maka kita harus menggunakan group by juga bagi field yang tidak terkena aggregate. Subquery ini :

fd - 4

akan menghasilkan tabel berikut :

fd - 5

Artinya member dengan uplineid 0 hanya ada 1 orang
Member dengan uplineid 1 ada 3 orang (memberid=1 memiliki 3 orang downline)
Member dengan uplineid 2 ada 1 orang (memberid=2 memiliki 1 orang downline)

Tabel subquery yang sudah didapatkan ini akan digabungkan dengan tabel msmember.

fd - 6

Untuk menggabungkan kedua tabel di atas, kita menggunakan left join, dengan tujuan agar semua member dapat ditampilkan. Jika kita hanya menggunakan join, maka member yang tidak memiliki downline tidak akan keluar namanya, hal ini dikarenakan join hanya menampilkan data jika semua MemberId pada tabel kiri dan uplineid pada tabel kanan memiliki value yang sama.

on a.MemberId = sub.upline

syntax ini akan melakukan pengecekan memberid di tabel kiri (msmember), disatukan dengan uplineid di tabel kanan (hasil subquery), sehingga menghasilkan tabel seperti yang kita inginkan.

fd - 7


Published at :
Written By
Ferdinand Ariandy Luwinda, S.Kom., M.T.I
Subject Content Coordinator - Basic Programming | School of Computer Science

Periksa Browser Anda

Check Your Browser

Situs ini tidak lagi mendukung penggunaan browser dengan teknologi tertinggal.

Apabila Anda melihat pesan ini, berarti Anda masih menggunakan browser Internet Explorer seri 8 / 7 / 6 / ...

Sebagai informasi, browser yang anda gunakan ini tidaklah aman dan tidak dapat menampilkan teknologi CSS terakhir yang dapat membuat sebuah situs tampil lebih baik. Bahkan Microsoft sebagai pembuatnya, telah merekomendasikan agar menggunakan browser yang lebih modern.

Untuk tampilan yang lebih baik, gunakan salah satu browser berikut. Download dan Install, seluruhnya gratis untuk digunakan.

We're Moving Forward.

This Site Is No Longer Supporting Out-of Date Browser.

If you are viewing this message, it means that you are currently using Internet Explorer 8 / 7 / 6 / below to access this site. FYI, it is unsafe and unable to render the latest CSS improvements. Even Microsoft, its creator, wants you to install more modern browser.

Best viewed with one of these browser instead. It is totally free.

  1. Google Chrome
  2. Mozilla Firefox
  3. Opera
  4. Internet Explorer 9
Close