sql >> Database teknologi >  >> RDS >> Oracle

Oracle-syntaks – skal vi vælge mellem det gamle og det nye?

Lignende ting her, men ikke så mange dev'er, og ikke så gamle af kode. Jeg bruger de nyere ting, de ældre fyre bruger den ældre stil, men vi ved begge, hvad den anden forsøger at gøre.

Personligt vil jeg sige, gå med den stil, der er nemmere for den enkelte udvikler at bruge. Medmindre du kører benchmarks og finder ud af, at den ene er hurtigere end den anden (som i, en forskel nok til at være signifikant), og både nye og gamle kan læse og forstå de forespørgsler, de ser, er der ingen grund til at ændre dem.

Men min personlige stemme ville være at lade de gamle ting være som de er og skrive nye forespørgsler ved hjælp af den nyere syntaks, som ved at bruge JOIN s og USING og ON osv. er meget nemmere at læse og ved, hvad der foregår, og så har en masse AND x.col = y.col AND z.col = a.col i WHERE afsnit.

Det, og de nye fyre kommer sandsynligvis til at være længere, så de får deres vilje til sidst...

Et tilføjet eksempel

Ved ikke med jer andre, men jeg ville nødig prøve at finde ud af sådan noget (eller skrive dette) ved at bruge den gamle måde at deltage på:

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. Entity framework tilføjer en ekstra betingelse om hvor-klausul

  2. Hvordan taler Access med ODBC-datakilder? Del 1

  3. Automatiser versionsnummer-hentning fra .Dtsx-filer

  4. Opdater en sorteringsindekskolonne for at flytte elementer