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

Sintaks Oracle - haruskah kita memilih antara yang lama dan yang baru?

Hal serupa di sini, tetapi tidak banyak pengembang, dan tidak setua kode. Saya menggunakan hal-hal yang lebih baru, orang-orang yang lebih tua menggunakan gaya yang lebih lama, tetapi kami berdua tahu apa yang coba dilakukan pihak lain.

Secara pribadi, saya akan mengatakan pergi dengan gaya mana pun yang lebih mudah digunakan oleh pengembang individu. Kecuali Anda menjalankan tolok ukur dan mengetahui bahwa yang satu lebih cepat dari yang lain (seperti dalam, perbedaan yang cukup signifikan), dan baik yang baru maupun yang lama dapat membaca &memahami kueri yang mereka lihat, tidak ada alasan untuk mengubahnya.

Namun, pilihan pribadi saya adalah membiarkan hal-hal lama apa adanya, dan menulis kueri baru menggunakan sintaks yang lebih baru, seperti menggunakan JOIN s dan USING dan ON dll. jauh lebih mudah dibaca, dan tahu apa yang terjadi, kemudian memiliki banyak AND x.col = y.col AND z.col = a.col di WHERE bagian.

Itu, dan orang-orang baru mungkin akan bertahan lebih lama, jadi pada akhirnya mereka akan berhasil...

Contoh tambahan

Tidak tahu tentang kalian semua, tapi saya tidak suka harus mencoba mencari tahu sesuatu seperti ini (atau menulis ini) menggunakan gaya lama bergabung:

SELECT DISTINCT product_zone_map_id, zh.name_english, zh.name_french, zone_id, ad.attribute_value_english AS bullprep_region_type,
        product_zone_type_id, ad.attribute_value_english, language_english, product_code, office_code,
        (
            SELECT attribute_value_english
            FROM presentation p JOIN presentation_details ad USING(presentation_id)
            WHERE dimension_id = 4
              AND object_id = product_zone_map_id
              AND attribute_type = 'BULLPREP PARENT ID'
              AND p.usage_start_date <= TO_TIMESTAMP('2010-05-12', 'yyyy-mm-dd hh24:mi:ss')
              AND (p.usage_end_date >= TO_TIMESTAMP('2010-05-12', 'yyyy-mm-dd hh24:mi:ss') OR p.usage_end_date IS NULL)
        ) AS bullprep_parent_id,
        (
            SELECT attribute_value_english
            FROM presentation p JOIN presentation_details ad USING(presentation_id)
            WHERE dimension_id = 4
              AND object_id = product_zone_map_id
              AND attribute_type = 'BULLPREP GROUP ID'
              AND p.usage_start_date <= TO_TIMESTAMP('2010-05-12', 'yyyy-mm-dd hh24:mi:ss')
              AND (p.usage_end_date >= TO_TIMESTAMP('2010-05-12', 'yyyy-mm-dd hh24:mi:ss') OR p.usage_end_date IS NULL)
        ) AS bullprep_group_id, product_zone_seq
FROM zone z JOIN zone_history zh ON(z.zone_id = zh.zone_id)
     JOIN product_zone_map pzm ON(z.zone_id = pzm.zone_id)
     JOIN product USING(product_id)
     JOIN product_history ph USING(product_id)
     JOIN language_reference USING(language_id)
     LEFT OUTER JOIN product_zone_attribute_details pzad USING(product_zone_map_id)
     LEFT OUTER JOIN attribute_details ad USING(attribute_id)
     JOIN zone_geocode_map USING(zone_id)
     JOIN geocode USING(geocode_id)
WHERE zh.usage_start_date <= TO_TIMESTAMP('2010-05-12', 'yyyy-mm-dd hh24:mi:ss')
  AND (zh.usage_end_date >= TO_TIMESTAMP('2010-05-12', 'yyyy-mm-dd hh24:mi:ss') OR zh.usage_end_date IS NULL)
  AND pzm.usage_start_date <= TO_TIMESTAMP('2010-05-12', 'yyyy-mm-dd hh24:mi:ss')
  AND (pzm.usage_end_date >= TO_TIMESTAMP('2010-05-12', 'yyyy-mm-dd hh24:mi:ss') OR pzm.usage_end_date IS NULL)
  AND (attribute_type = 'BULLPREP REGION TYPE' OR attribute_type IS NULL)
  AND product_id = 2075
ORDER BY product_zone_seq



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL:pilih dari tabel dengan tabel bersarang

  2. Jalankan Oracle Forms sebagai standalone tanpa browser

  3. 2 Cara Memformat Hasil Kueri Anda di SQLcl (Oracle)

  4. Pemicu Modifikasi Sesi?

  5. Bagaimana cara mendapatkan info pelacakan untuk variabel pengikat yang melewati OracleParameter di ODP.NET?