Anda harus mulai menggunakan sintaks JOIN standar. Selain lebih mudah dibaca (setidaknya menurut saya) itu juga melindungi Anda dari gabungan kartesius yang tidak disengaja jika Anda lupa kondisi bergabung yang sebenarnya dalam klausa WHERE. Plus ini portabel di hampir semua DBMS sebagai lawan dari (+)
sintaks yang digunakan oleh Oracle (yang juga memiliki beberapa batasan yang tidak dimiliki sintaks JOIN)
Berikut adalah kueri yang ditulis ulang menggunakan gabungan eksplisit (bukan implisit):
SELECT DISTINCT ope.ope_operationid,
ser.ser_code,
opt.opt_code,
ost.ost_code
FROM od_operation ope,
LEFT JOIN od_service_type ser ON ope.ser_id = ser.ser_id
LEFT JOIN od_operation_type opt ON opt.opt_id = ope.opt_id
LEFT JOIN od_status_type ost ON ost.ost_id = ope.ost_id
LEFT JOIN od_equipment_type eqt ON ????????
WHERE ope.opt_id = 3781
AND ope.ope_operationid = 'LAA351BP'
Sunting
Kondisi join yang hilang pada od_equipment_type
adalah alasan mengapa sintaks JOIN lebih disukai. Jika tanda koma di SQL asli dihapus, pernyataan tersebut akan membuat gabungan kartesius yang tidak diinginkan yang mungkin berdampak parah pada server jika tabel yang terlibat besar.
Dengan sintaks GABUNG Anda akan selalu mendapatkan kesalahan sintaks yang mencegah Anda dari kesalahan ketik tersebut. Menggunakan gabungan implisit hanya akan memberi Anda kesalahan ketika Anda meninggalkan koma di daftar FROM, tetapi tidak pernah jika Anda melewatkan kondisi bergabung di WHERE