Penggabungan Diri Untuk Menghitung Selisih - MySQL Dasar #79

Operasi penggabungan diri tidak melibatkan tabel lain didalam penggabungan melainkan hanya satu tabel tunggal yang dibedakan menggunakan AS (alias). 


Jadi disini kita memiliki sebuah tabel yang memuat nilai kumulatif pada tiap barisnya, dan selanjutnya menghitung selisih antarbaris yang bertetangga.
MariaDB [root93]> DESC kota;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| urut  | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| kota  | varchar(65)      | NO   |     | NULL    |                |
| km    | smallint(6)      | NO   |     | NULL    |                |
+-------+------------------+------+-----+---------+----------------+
3 rows in set (0.068 sec)
MariaDB [root93]> SELECT * FROM kota;
+------+------------+------+
| urut | kota       | km   |
+------+------------+------+
|    1 | medan      |    0 |
|    2 | padang     |  350 |
|    3 | pekan baru |  555 |
|    4 | jambi      |  760 |
|    5 | palembang  |  964 |
|    6 | lampung    | 1200 |
|    7 | jakarta    | 1555 |
+------+------------+------+
7 rows in set (0.001 sec)
Operasi penggabungan diri dapat mengonversi nilai kumulatif ini menjadi selisih yang merepresentasikan jarak antar kota ke kota tetangganya. Query berikut menunjukan bagaimana menggunakan nomor urut pada rekaman untuk mencocokan pasangan baris – baris bertetangga dan menghitung selisih antar pasangan.
MariaDB [root93]> SELECT t1.urut AS urut1, t2.urut AS urut2,
    -> t1.kota AS kota1, t2.kota AS kota2,
    -> t1.km AS km1, t2.km AS km2,
    -> t2.km - t1.km AS jarak
    -> FROM kota AS t1, kota AS t2
    -> WHERE t1.urut+1=t2.urut
    -> ORDER BY t1.urut;
+-------+-------+------------+------------+------+------+-------+
| urut1 | urut2 | kota1      | kota2      | km1  | km2  | jarak |
+-------+-------+------------+------------+------+------+-------+
|     1 |     2 | medan      | padang     |    0 |  350 |   350 |
|     2 |     3 | padang     | pekan baru |  350 |  555 |   205 |
|     3 |     4 | pekan baru | jambi      |  555 |  760 |   205 |
|     4 |     5 | jambi      | palembang  |  760 |  964 |   204 |
|     5 |     6 | palembang  | lampung    |  964 | 1200 |   236 |
|     6 |     7 | lampung    | jakarta    | 1200 | 1555 |   355 |
+-------+-------+------------+------------+------+------+-------+
6 rows in set (0.001 sec)

0 Response to "Penggabungan Diri Untuk Menghitung Selisih - MySQL Dasar #79"

Post a Comment

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin