Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cú pháp Oracle - chúng ta có nên chọn giữa cái cũ và cái mới không?

Điều tương tự ở đây, nhưng không nhiều nhà phát triển và không nhiều mã. Tôi đang sử dụng công cụ mới hơn, những người cũ đang sử dụng phong cách cũ hơn, nhưng cả hai chúng tôi đều biết người kia đang cố gắng làm gì.

Về mặt cá nhân, tôi muốn nói rằng hãy chọn bất kỳ phong cách nào dễ sử dụng hơn cho nhà phát triển cá nhân. Trừ khi bạn chạy điểm chuẩn và phát hiện ra rằng cái này nhanh hơn cái kia (như trong, đủ sự khác biệt để trở nên đáng kể) và cả người mới và người cũ đều có thể đọc và hiểu các truy vấn mà họ nhìn thấy, thì không có lý do gì để thay đổi chúng.

Tuy nhiên, phiếu bầu cá nhân của tôi sẽ là để nguyên những thứ cũ và viết các truy vấn mới bằng cú pháp mới hơn, như sử dụng JOIN s và USINGON v.v ... dễ đọc hơn rất nhiều và biết điều gì đang xảy ra, sau đó có một loạt AND x.col = y.col AND z.col = a.col trong WHERE phần.

Điều đó, và những người mới có lẽ sẽ ở lâu hơn, vì vậy cuối cùng họ sẽ tìm được cách của họ ...

Thêm một ví dụ

Không biết những người còn lại trong bạn như thế nào, nhưng tôi ghét phải thử hình dung ra điều gì đó như thế này (hoặc viết thế này) bằng cách sử dụng kiểu tham gia cũ:

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. Java-Eclipse:Gói oracle.jdbc.driver không tồn tại

  2. Quản lý cửa sổ trong Oracle D2k Forms

  3. Cách tìm nạp tên ràng buộc kiểm tra do hệ thống tạo ra của cột bảng trong oracle

  4. Hàm TRUNC (ngày tháng) trong Oracle

  5. Truy vấn nối nhiều bảng trong Oracle SQL plus 11g