Uncategorized

Tutorial Basis Data dengan MySQL : Studi Kasus III (Eksekusi Query)

Di tutorial sebelumnya teah dijelaskan cara memasukkan data pada tabel-tabel yang ada. Pada tutorial ini akan disertakan contoh dan cara melakukan eksekusi query beserta penjelasannya.

1. Mengetahui Tujuan Email Pengguna Facebook

Cara yang dilakukan yaitu dengan membuat query untuk menampilkan field message_id dan to_email_message dari tabel SENT_MESSAGES kemudian di-left join dengan tabel MY_EMAIL_LOGINS untuk menampilkan field my_email_name dan my_id dengan kondisi SENT_MESSAGES.my_login=MY_EMAIL_LOGINS.my_login. Dalam hal ini, field my_login yang menjadi PK (primary key) di tabel MY_EMAIL_LOGINS direlasikan dengan field my_login pada tabel SENT_MESSAGES yang terdefinisi sebagai foreign key.

mysql> select
-> SENT_MESSAGES.message_id,
-> MY_EMAIL_LOGINS.my_email_name,
-> MY_EMAIL_LOGINS.my_id,
-> SENT_MESSAGES.to_email_address
-> from SENT_MESSAGES left join MY_EMAIL_LOGINS
-> on SENT_MESSAGES.my_login=MY_EMAIL_LOGINS.my_login;
+------------+-----------------------------+-------+------------------------+
| message_id | my_email_name               | my_id | to_email_address       |
+------------+-----------------------------+-------+------------------------+
| 001        | george_washington@gmail.com |  1001 | james_monroe@gmail.com |
| 002        | george_washington@gmail.com |  1001 | john_adams@gmail.com   |
+------------+-----------------------------+-------+------------------------+
2 rows in set (0.01 sec) 

2. Melihat Pesan yang Diterima

Cara yang dilakukan yaitu dengan membuat query untuk menampilkan field mail_id, from_email_address dan message pada tabel  MAIL_BOXES dan field my_id serta field my_email_name dari tabel MY_EMAIL_LOGINS. Tabel MAIL_BOXES di-left join dengan tabel MY_EMAIL_LOGINS dengan kondisi MAIL_BOXES.my_login= MY_EMAIL_LOGINS.my_login. Dalam hal ini, field my_login menjadi PK (primary key) pada tabel MY_EMAIL_LOGINS yang direlasikan dengan field my_login pada tabel MAIL_BOXES yang terdefinisi sebagai foreign key.

mysql> select
-> MAIL_BOXES.mail_id,
-> MY_EMAIL_LOGINS.my_email_name,
-> MY_EMAIL_LOGINS.my_id, MAIL_BOXES.from_email_address,
-> MAIL_BOXES.message from MAIL_BOXES left join MY_EMAIL_LOGINS
-> on MAIL_BOXES.my_login=MY_EMAIL_LOGINS.my_login;
---------+-----------------------------+-------+----------------------------+--
-------------------------+
| mail_id | my_email_name               | my_id | from_email_address         | m
essage                   |
+---------+-----------------------------+-------+----------------------------+--
-------------------------+
|       1 | george_washington@gmail.com |  1001 | john_monroe@gmail.com      | H
ow are you?              |
|       2 | james_madison@gmail.com     |  1004 | thomas_jefferson@gmail.com | C
ongrats for your success |
+---------+-----------------------------+-------+----------------------------+--
-------------------------+
2 rows in set (0.09 sec)

3. Menghitung Jumlah Pesan yang Diterima

Cara yang dillakukan yaitu dengan membuat query untuk menampilkan field my_email_name dan field my_id pada tabel MY_EMAIL_LOGINS dan menghitung banyaknya pesan di field from_email_address pada tabel MAIL_BOXES dengan perintah COUNT. Tabel MAIL_BOXES di-left join dengan tabel MY_EMAIL_LOGINS dengan kondisi MAIL_BOXES.my_login = MY_EMAIL_LOGINS.my_login dan mengelompokkannya dalam MY_EMAIL_LOGINS.my_id. Dalam hal ini, field my_login yang menjadi PK (primary key) di table MY_EMAIL_LOGINS direlasikan dengan field my_login pada tabel MAIL_BOXES yang terdefinisi sebagai foreign key. Kemudian data dikelompokkan berdasarkan field my_id dari tabel MY_EMAIL_LOGINS menggunakan perintah GROUP BY.

mysql> select
-> My_Email_Logins.my_email_name,
-> My_Email_Logins.my_id,
-> COUNT(Mail_Boxes.from_email_address)
-> from Mail_Boxes left join My_Email_Logins
-> on Mail_Boxes.my_login=My_Email_Logins.my_login
-> group by My_Email_Logins.my_id;
+-----------------------------+-------+--------------------------------------+
| my_email_name               | my_id | COUNT(Mail_Boxes.from_email_address) |
+-----------------------------+-------+--------------------------------------+
| george_washington@gmail.com |  1001 |                                    1 |
| james_madison@gmail.com     |  1004 |                                    1 |
+-----------------------------+-------+--------------------------------------+
2 rows in set (0.20 sec)