Translate query

saya lagi bingung nih cara baca query ini. karena saya kurang paham dalam penggunaan temp, then, ma dan Group by.

ada yang bisa translate ke bahasa indonesia yang baik dan mudah dimengerti ? tolong bantuannya.

terimakasih.

SELECT temp.id_order, temp.username, temp.status_terakhir FROM (SELECT order_jasa.id_order, order_jasa.username, order_jasa.status_order, CASE WHEN detail.status_revisi THEN MAX(detail.status_revisi) ELSE 0 END AS status_terakhir FROM order_jasa LEFT JOIN detail ON detail.id_order = order_jasa.id_order GROUP BY order_jasa.id_order) AS temp WHERE temp.status_order = 3 AND temp.status_terakhir != 3

avatar waliyurachman29
@waliyurachman29

58 Kontribusi 8 Poin

Diperbarui 6 tahun yang lalu

2 Jawaban:

Jawaban Terpilih

ini query SELECT IN SELECT query ini ngambil data dari hasil query pertama..

#QUERY PERTAMA

// ini perintah untuk menampilkan data pada table, menampilkan field i_order,username,status,order
SELECT order_jasa.id_order, order_jasa.username, order_jasa.status_order,

// ini conditional,
CASE WHEN detail.status_revisi THEN MAX(detail.status_revisi) ELSE 0 END AS status_terakhir

// jika value status_revisi itu ada alias TIDAK NULL , THEN (MAKA)
CASE WHEN detail.status_revisi

// MAKA ambil value status_revisi nya, FUNGSI MAX() itu berguna untuk mengambil value status revisi terbesar / terakhir
THEN MAX(detail.status_revisi)

// jika value nya NULL maka beri nilai nya 0
ELSE 0 END

// beri nama conditional status revisi tersebut 'status_terakhir'
AS status_terakhir

FROM order_jasa LEFT JOIN detail ON detail.id_order = order_jasa.id_order

// Fungsi GROUP BY untuk menggabungkan semua data menjadi 1 row berdasarkan id_order nya..
// misal ada data
// order : 1 , status revisi 1
// order : 1, status revisi : 2
// ketika di group by maka akan tampil menjadi
// order : 1, status revisi : 1
//
// nah, karena diatas ada fungsi max, yang digunakan untuk max(status_revisi)
// maka yg akan tampil
// order :1, status revisi : 2

GROUP BY order_jasa.id_order

// Query 1 di beri nama temp, temp ini bebas mau di beri nama apapun mau temporary, mau hasil, mau apapun itu bebas.. nnt ini dipake di query ke dua
...) AS temp

# Query Kedua menampilkan data dari hasil query pertama, temp.id_order, naah kata "temp" ini didapat dari AS temp, penamaan query pertama yg udh di bilang di sebelumnya..

jika AS nya bukan temp tapi AS hasil maka di query ke 2 jadi nya SELECT hasil.id_order, hasil.username, hasil.status_terakhir

// where ini cuma untuk filter lagi dari data di atas tampilin yg status order nya 3 dan status terakhir nya tidak sama 3

WHERE temp.status_order = 3 AND temp.status_terakhir != 3
avatar gunalirezqimauludi
@gunalirezqimauludi

350 Kontribusi 243 Poin

Dipost 6 tahun yang lalu

makasi mas gunali. selalu sangat membantu he

avatar waliyurachman29
@waliyurachman29

58 Kontribusi 8 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban