Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Permintaan SQL untuk mengembalikan baris meskipun tidak ditemukan, dengan setidaknya parameter

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mendapatkan elemen pertama dengan XPath di Oracle

  2. Saya perlu kode harga untuk ditanyakan hanya jika tipe :=E

  3. SQL Query dengan CASE dan grup menurut

  4. Paket cx_Oracle Tidak berfungsi di dalam Crontab

  5. Penyedia Oracle untuk Oledb hilang di VS 2015 Shell