Du bør begynde at bruge standard JOIN-syntaks. Udover at være mere læsbar (i hvert fald efter min mening) beskytter den dig også mod utilsigtede kartesiske joinforbindelser, hvis du glemmer den faktiske join-betingelse i WHERE-klausulen. Derudover er den bærbar på tværs af næsten alle DBMS i modsætning til den klodsede (+)
syntaks brugt af Oracle (som også har nogle begrænsninger, som JOIN-syntaksen ikke har)
Her er forespørgslen omskrevet ved hjælp af eksplicitte (i stedet for implicitte) joins:
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'
Rediger
Den manglende forbindelsestilstand på od_equipment_type
er netop grunden til, at JOIN-syntaksen foretrækkes. Hvis det efterfølgende komma i den originale SQL fjernes, ville sætningen skabe en uønsket kartesisk join, som kan have en alvorlig indvirkning på serveren, hvis de involverede tabeller er store.
Med JOIN-syntaksen vil du altid få en syntaksfejl, som forhindrer dig i sådanne tastefejl. Brug af implicitte joinforbindelser vil kun give dig en fejl, når du efterlader et komma i FROM-listen, men aldrig hvis du går glip af en join-betingelse i WHERE