Mengurutkan Berdasarkan Panjang Substring - MySQL Dasar #43

Pada pembelajaran ini Anda akan diberikan contoh tentang bagaimana untuk mengurutkan bagian - bagian dari sebuah kolom pada posisi tertentu didalam kolom tersebut. Anda bisa menggunakan fungsi LEFT(), MID(), dan RIGHT().

Baca Sebelumnya : Mengurutkan Berdasarkan Waktu dalam Sehari - MySQL Dasar #42

Daftar isi : Pengurutan Hasil Query 

Misalanya disini Anda memiliku sebuah tabel dengan nama rumah lalu kemudian didalamnya terdapat jenis - jenis peralatan dalam rumah dengan kode identifikasi tertentu dengan ID 10 karakter yang memuat 3 sub bagian: sebuah singkatan tiga karakter (seperti DPR untuk "dapur" atau MND "kamar mandi") selanjutnya sebuah serial limat digit dan tambahan kode negara dimana perlatan tersebut dibuat

MariaDB [root93]> CREATE TABLE rumah
    -> (id VARCHAR(30), deskripsi VARCHAR(50));
Query OK, 0 rows affected (0.31 sec)
MariaDB [root93]> INSERT INTO rumah(id, deskripsi) VALUES('RMM40672ID','meja makan');
Query OK, 1 row affected (0.05 sec)

MariaDB [root93]> INSERT INTO rumah(id, deskripsi) VALUES('DPR00372UK','oven microwave');
Query OK, 1 row affected (0.08 sec)

MariaDB [root93]> INSERT INTO rumah(id, deskripsi) VALUES('DPR01729JP','kulkas');
Query OK, 1 row affected (0.03 sec)

MariaDB [root93]> INSERT INTO rumah(id, deskripsi) VALUES('TDR0038SG','lampu tidur');
Query OK, 1 row affected (0.05 sec)

MariaDB [root93]> INSERT INTO rumah(id, deskripsi) VALUES('MND004485US','shower');
Query OK, 1 row affected (0.05 sec)

MariaDB [root93]> INSERT INTO rumah(id, deskripsi) VALUES('MND00415ID','bath tube');
Query OK, 1 row affected (0.05 sec)
MariaDB [root93]> SELECT * FROM rumah;
+-------------+----------------+
| id          | deskripsi      |
+-------------+----------------+
| RMM40672ID  | meja makan     |
| DPR00372UK  | oven microwave |
| DPR01729JP  | kulkas         |
| TDR0038SG   | lampu tidur    |
| MND004485US | shower         |
| MND00415ID  | bath tube      |
+-------------+----------------+
6 rows in set (0.00 sec)

jika misalnya dalam hal ini Anda ingin mengurutkan nilai - nilai pada tabel rumah berdasarkan Anda ID, maka ini bisa dilakukan dengan cara berikut

MariaDB [root93]> SELECT * FROM rumah ORDER by id;
+-------------+----------------+
| id          | deskripsi      |
+-------------+----------------+
| DPR00372UK  | oven microwave |
| DPR01729JP  | kulkas         |
| MND00415ID  | bath tube      |
| MND004485US | shower         |
| RMM40672ID  | meja makan     |
| TDR0038SG   | lampu tidur    |
+-------------+----------------+
6 rows in set (0.00 sec)

tetapi bagaimana jika misal pengurutan nilainya diurutkan berdasarkan potongan - potongan dari 10 kode yang terdapat pada ID diatas, maka caranya adalah dengan memanfaatkan fungsi MID, LEFT dan RIGHT. Fungsi - fungsi tersebut nantinya dapat memcecah string ID menjadi beberapa bagian komponen seperti contoh berikut

MariaDB [root93]> SELECT id,
    -> LEFT(id, 3) AS kategori,
    -> MID(id,4,5) AS serial,
    -> RIGHT(id,2) AS negara
    -> FROM rumah;
+-------------+----------+--------+--------+
| id          | kategori | serial | negara |
+-------------+----------+--------+--------+
| RMM40672ID  | RMM      | 40672  | ID     |
| DPR00372UK  | DPR      | 00372  | UK     |
| DPR01729JP  | DPR      | 01729  | JP     |
| TDR0038SG   | TDR      | 0038S  | SG     |
| MND004485US | MND      | 00448  | US     |
| MND00415ID  | MND      | 00415  | ID     |
+-------------+----------+--------+--------+

Kemudian nilai - nilai dari substring ID bisa dijadikan sebagai salah satu parameter untuk melakukan pengurutan salah satu nilai ataupun dengan kombinasi pengurutan tertentu, hal ini merupakan hal yang mendasar seperti yang sudah dibahas pada pembelajaran sebelumnya dimana Anda hanya perlu menambahkan klausa ORDER by. Anda juga bisa menambahkan parameter lain seperti misal dalam contoh kasus ini adalah penambahan parameter LEF, RIGHT dan MID setelah klausa ORDER by seperti berikut

MariaDB [root93]> SELECT * FROM rumah ORDER by LEFT(id,3);
+-------------+----------------+
| id          | deskripsi      |
+-------------+----------------+
| DPR00372UK  | oven microwave |
| DPR01729JP  | kulkas         |
| MND004485US | shower         |
| MND00415ID  | bath tube      |
| RMM40672ID  | meja makan     |
| TDR0038SG   | lampu tidur    |
+-------------+----------------+
6 rows in set (0.00 sec)

MariaDB [root93]> SELECT * FROM rumah ORDER by MID(id,4,5);
+-------------+----------------+
| id          | deskripsi      |
+-------------+----------------+
| DPR00372UK  | oven microwave |
| TDR0038SG   | lampu tidur    |
| MND00415ID  | bath tube      |
| MND004485US | shower         |
| DPR01729JP  | kulkas         |
| RMM40672ID  | meja makan     |
+-------------+----------------+
6 rows in set (0.00 sec)
MariaDB [root93]> SELECT * FROM rumah ORDER by RIGHT(id,2);
+-------------+----------------+
| id          | deskripsi      |
+-------------+----------------+
| RMM40672ID  | meja makan     |
| MND00415ID  | bath tube      |
| DPR01729JP  | kulkas         |
| TDR0038SG   | lampu tidur    |
| DPR00372UK  | oven microwave |
| MND004485US | shower         |
+-------------+----------------+
6 rows in set (0.00 sec)

atau bisa saja dalam bentuk pecahan - pecahan substring, kemudian menggunakan alias tabel/urutan tabel alias untuk pengurutannya seperti contoh berikut

MariaDB [root93]> SELECT id, LEFT(id,3) AS kategori, MID(id,4,5) AS serial, RIGHT(id,2) AS negara FROM rumah ORDER by serial;
+-------------+----------+--------+--------+
| id          | kategori | serial | negara |
+-------------+----------+--------+--------+
| DPR00372UK  | DPR      | 00372  | UK     |
| TDR0038SG   | TDR      | 0038S  | SG     |
| MND00415ID  | MND      | 00415  | ID     |
| MND004485US | MND      | 00448  | US     |
| DPR01729JP  | DPR      | 01729  | JP     |
| RMM40672ID  | RMM      | 40672  | ID     |
+-------------+----------+--------+--------+
6 rows in set (0.00 sec)

MariaDB [root93]> SELECT id, LEFT(id,3) AS kategori, MID(id,4,5) AS serial, RIGHT(id,2) AS negara FROM rumah ORDER by 4;
+-------------+----------+--------+--------+
| id          | kategori | serial | negara |
+-------------+----------+--------+--------+
| RMM40672ID  | RMM      | 40672  | ID     |
| MND00415ID  | MND      | 00415  | ID     |
| DPR01729JP  | DPR      | 01729  | JP     |
| TDR0038SG   | TDR      | 0038S  | SG     |
| DPR00372UK  | DPR      | 00372  | UK     |
| MND004485US | MND      | 00448  | US     |
+-------------+----------+--------+--------+
6 rows in set (0.00 sec)

Contoh lainnya juga Anda bisa menambahkan pengurutan kombinasi dengan fungsi LEFT, RIGHT, MID, pengurutan kombinasi ini juga sudah dibahas pada pembelajaran mendasar mengenai pengurutan

MariaDB [root93]> SELECT * FROM rumah ORDER by RIGHT(id,2), MID(id,4,5);
+-------------+----------------+
| id          | deskripsi      |
+-------------+----------------+
| MND00415ID  | bath tube      |
| RMM40672ID  | meja makan     |
| DPR01729JP  | kulkas         |
| TDR0038SG   | lampu tidur    |
| DPR00372UK  | oven microwave |
| MND004485US | shower         |
+-------------+----------------+
6 rows in set (0.01 sec)

Selanjutnya : Mengurutkan Berdasarkan Panjang Substring Berubah - MySQL Dasar #44

0 Response to "Mengurutkan Berdasarkan Panjang Substring - MySQL Dasar #43"

Post a Comment

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin