Oracle
 sql >> база данни >  >> RDS >> Oracle

SQL заявка за връщане на ред, дори ако не е намерен, с поне параметри

Трябва да започнете да използвате стандартен синтаксис JOIN. Освен че е по-четим (поне според мен), той също така ви предпазва от случайни декартови съединения, ако забравите действителното условие за свързване в клаузата WHERE. Плюс това е преносим в почти всички СУБД за разлика от тромавия (+) синтаксис, използван от Oracle (който също има някои ограничения, които синтаксисът JOIN няма)

Ето заявката, пренаписана с помощта на явни (вместо неявни) съединявания:

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'

Редактиране

Липсващото условие за присъединяване на od_equipment_type е точно причината, поради която се предпочита синтаксисът JOIN. Ако крайната запетая в оригиналния SQL бъде премахната, операторът ще създаде нежелано декартово съединение, което може да има сериозно въздействие върху сървъра, ако участващите таблици са големи.

Със синтаксиса JOIN винаги ще получавате синтактична грешка, която ви предпазва от подобни правописни грешки. Използването на неявни съединения ще ви даде грешка само когато оставите запетая в списъка FROM, но никога, ако пропуснете условие за свързване в 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. Референтен SQL за дете + родител

  2. Влияят ли ограниченията на външния ключ върху трансформациите на заявките в Oracle?

  3. След заявка, оказваща въздействие върху използването на DB CPU, мога ли да намаля данните в таблицата, ще ми помогне да намаля производителността на DB CPU

  4. Как да използвате функцията xmlconcat в Oracle

  5. Използване на референтен курсор на Oracle в Java без зависимост от Oracle