標準のJOIN構文の使用を開始する必要があります。 (少なくとも私の意見では)読みやすくなるだけでなく、WHERE句の実際の結合条件を忘れた場合に、偶発的なデカルト結合から保護します。さらに、不格好な(+)
とは対照的に、ほぼすべてのDBMS間で移植可能です。 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
で結合条件を見逃した場合はエラーが発生しません。