Chiamatemi Sybilla

(con la ‘y’ perché fa più figo).
Ora.
Scrivo un nuovo post dopo secoli per lamentarmi (chi l’avrebbe mai detto).
Qui sotto uno script SQL, di cui dovrei capire il funzionamento.
Non dico altro.
(in fondo compare pure una scrollbar orizzontale, visto che l’indentazione diventa, come dire, non banale)

WHENEVER SQLERROR EXIT FAILURE ROLLBACK
WHENEVER  OSERROR EXIT FAILURE ROLLBACK

set time on
set timing on
SET VERIFY OFF
WHENEVER SQLERROR CONTINUE
drop table seo_l2kc_lingua_&1 purge;
WHENEVER SQLERROR EXIT FAILURE ROLLBACK
create table seo_l2kc_lingua_&1   tablespace DATA_L nologging as
 SELECT a  dove,
          b  parola,
          e  seo_rank,
          f  regione,
          g  c_categoria,
          0  ctj,
          &1 clingua
     FROM (SELECT a,
                  b,
                  SUM(e) e,
                  f,
                  MAX(g) g
             FROM (SELECT s.dove a,
                          s.cat b,
                          round((nvl(cnt, 0) ) *
                                100000 + SUM(s.COUNT)) e,
                          des_regione f,
                          c_categoria g
                     FROM seotmp_tq tq,
                          (SELECT dove dove,
                                  lower(cat) cat,
                                  COUNT(1) COUNT,
                                  regione des_regione,
                                  ca.cd_categoria c_categoria
                             FROM seo_tmp_cat_lingua1 ca,
                                  (SELECT dove,
                                          cat cat,
                                          regione
                                     FROM (
                                           --category match esatto   --il match esatto lo inserisco solo una volta
                                           SELECT dove,
                                                   cat,
                                                   regione
                                             FROM (SELECT decode(l.localita,
                                                                  NULL,
                                                                  lbs.ds_comune,
                                                                  l.localita) dove,
                                                           ca.ds_categoria cat,
                                                           decode(l2.localita,
                                                                  NULL,
                                                                  lbs.ds_regione,
                                                                  l2.localita) regione
                                                      FROM mdr_inserzioni_categorie c,
                                                           mdr_inserzioni           i,
                                                           seo_tmp_cat_lingua1      ca,
                                                           mdr_anag_lbs         lbs,
                                                           seo_localita_lingua      l,
                                                           seo_localita_lingua      l2
                                                     WHERE ca.cd_categoria = c.cd_categoria
                                                       AND c.pr_inserzione =i.pr_inserzione
                                                       AND lbs.cd_localita = i.cd_localita_lbs
                                                       AND cd_comune !=0
                                                       AND cd_frazione =0
                                                       AND lbs.cd_lingua=&1
                                                       AND l2.lingua = &1
                                                       AND l.lingua = &1
                                                       AND l2.tipo = 'r'
                                                       AND l.tipo = 'c'
                                                       AND ca.clingua = &1
                                                       AND l.cd(+) = lbs.cd_comune
                                                       AND l2.cd(+) = lbs.cd_regione
                                                       AND l2.lingua = &1
                                                       AND i.fl_lingua =  decode(&1,
                                                                  2,
                                                                  '1000',
                                                                  3,
                                                                  '0100',
                                                                  4,
                                                                  '0010',
                                                                  5,
                                                                  '0001')
                                                     union
                                                                                     SELECT decode(l.localita,
                                                                                                   NULL,
                                                                                                   lbs.ds_comune,
                                                                                                   l.localita) dove,
                                                                                            ca.ds_categoria cat,
                                                                                            decode(l2.localita,
                                                                                                   NULL,
                                                                                                   lbs.ds_regione,
                                                                                                   l2.localita) regione
                                                                                       FROM mdr_inseriti        i,
                                                                                            seo_tmp_cat_lingua1  ca,
                                                                                            mdr_anag_lbs    lbs,
                                                                                            seo_localita_lingua l,
                                                                                            seo_localita_lingua l2
                                                                                      WHERE lbs.cd_lingua=1 and ca.cd_categoria = i.cd_categoria
                                                                                        AND lbs.cd_localita = i.cd_localita_lbs
                                                                                        AND cd_comune !=0
                                                                                        AND cd_frazione =0                                                                                  
                                                                                        AND l2.lingua = &1
                                                                                        AND l.lingua = &1
                                                                                        AND l2.tipo = 'r'
                                                                                        AND l.tipo = 'c'
                                                                                        AND ca.clingua = &1
                                                                                        AND l.cd(+) = lbs.cd_comune
                                                                                        and l2.lingua=&1
                                                                                        AND l2.cd(+) = lbs.cd_regione
                                                    )))
                            WHERE ca.ds_categoria(+) = cat
                            GROUP BY dove,
                                     lower(cat),
                                     ca.ds_categoria,
                                     ca.cd_categoria,
                                     regione,
                                     ca.ds_categoria) s
                    WHERE tq.qs(+) = s.cat
                      AND tq.dv(+) = s.dove
                    GROUP BY s.dove,
                             s.cat,
                             des_regione,
                             c_categoria,
                             cnt
                   UNION ALL                   
                   -----------------------province-----------------------------
                   SELECT s.dove a,
                          s.cat b,
                          round((nvl(cnt, 0) ) *
                                100000 + SUM(s.COUNT)) e,
                          des_regione f,
                          c_categoria g
                     FROM seotmp_tq tq,
                          (SELECT dove dove,
                                  lower(cat) cat,
                                  COUNT(1) COUNT,
                                  regione des_regione,
                                  ca.cd_categoria c_categoria
                             FROM seo_tmp_cat_lingua1 ca,
                                  (SELECT dove,
                                          cat cat,
                                          regione
                                     FROM (
                                           --category match esatto   --il match esatto lo inserisco solo una volta
                                           SELECT dove,
                                                   cat,
                                                   regione
                                             FROM (SELECT lbs.ds_sigla_prov dove,
                                                           ca.ds_categoria cat,
                                                           decode(l2.localita,
                                                                  NULL,
                                                                  lbs.ds_regione,
                                                                  l2.localita) regione
                                                      FROM mdr_inserzioni_categorie c,
                                                           mdr_inserzioni           i,
                                                           seo_tmp_cat_lingua1       ca,
                                                           mdr_anag_lbs         lbs,
                                                           seo_localita_lingua      l2
                                                     WHERE lbs.cd_lingua =&1 and ca.cd_categoria = c.cd_categoria
                                                       AND c.pr_inserzione = i.pr_inserzione
                                                       AND lbs.cd_localita =i.cd_localita_lbs
                                                       AND cd_comune !=0
                                                       AND cd_frazione =0                                                                                   
                                                       AND l2.tipo = 'r'
                                                       AND ca.clingua = &1
                                                       and l2.lingua=&1
                                                       AND l2.cd(+) = lbs.cd_regione
                                                       and i.fl_lingua=decode(&1,2,'1000',3,'0100',4,'0010',5,'0001')
                                                    union
                                                    SELECT lbs.ds_sigla_prov dove,
                                                           ca.ds_categoria cat,
                                                           decode(l2.localita,
                                                                  NULL,
                                                                  lbs.ds_regione,
                                                                  l2.localita) regione
                                                      FROM mdr_inseriti        i,
                                                           seo_tmp_cat_lingua1  ca,
                                                           mdr_anag_lbs    lbs,
                                                           seo_localita_lingua l2
                                                     WHERE lbs.cd_lingua =&1 and ca.cd_categoria = i.cd_categoria
                                                      -- AND ca.cd_categoria != '000000000'
                                                       AND lbs.cd_localita =
                                                           i.cd_localita_lbs
                                                       AND cd_comune !=0
                                                       AND cd_frazione =0
                                                       AND l2.tipo = 'r'
                                                       and l2.lingua=&1
                                                       AND ca.clingua = &1
                                                       AND l2.cd(+) = lbs.cd_regione)))
                            WHERE ca.ds_categoria(+) = cat
                            GROUP BY dove,
                                     lower(cat),
                                     ca.ds_categoria,
                                     ca.cd_categoria,
                                     regione,
                                     ca.ds_categoria) s
                    WHERE tq.qs(+) = s.cat
                      AND tq.dv(+) = s.dove
                    GROUP BY s.dove,
                             s.cat,
                             des_regione,
                             c_categoria,
                             cnt
                   UNION ALL
                   ---------------------raggruppamenti------------------------
                   SELECT s.dove || ' (zona)' a,
                          s.cat b,
                          round((nvl(cnt, 0) 
                                ) *
                                100000 + SUM(s.COUNT)) e,
                          des_regione f,
                          c_categoria g
                     FROM seotmp_tq tq,
                          (SELECT dove dove,
                                  lower(cat) cat,
                                  COUNT(1) COUNT,
                                  regione des_regione,
                                  ca.cd_categoria c_categoria
                             FROM seo_tmp_cat_lingua1 ca,
                                  (SELECT dove,
                                          cat cat,
                                          regione
                                     FROM (
                                           --category match esatto   --il match esatto lo inserisco solo una volta
                                           SELECT dove,
                                                   cat,
                                                   regione
                                             FROM (SELECT ll.localita     dove, --rag.raggruppamento dove,
                                                           ca.ds_categoria cat,
                                                           ll3.localita    regione
                                                    /*  decode(l2.localita,
                                                                                                   NULL,
                                                                                                   lbs.ds_regione,
                                                                                                   l2.localita) regione*/
                                                      FROM mdr_inserzioni_categorie c,
                                                           mdr_inserzioni           i,
                                                           seo_tmp_cat_lingua1      ca,
                                                           seo_anag_raggruppamenti  rag,
                                                           mdr_anag_lbs         lbs,
                                                           --seo_localita_lingua      l2,
                                                           seo_localita_lingua ll,
                                                           seo_localita_lingua ll2,
                                                           seo_localita_lingua ll3
                                                     WHERE lbs.cd_lingua =&1 and ca.cd_categoria =
                                                           c.cd_categoria
                                                       AND c.pr_inserzione = i.pr_inserzione
                                                       AND lbs.cd_localita = i.cd_localita_lbs
                                                       AND lbs.cd_comune !=0
                                                       AND cd_frazione =0
                                                         AND lbs.ds_comune = ll2.localita --rag.comune
                                                          --  AND l2.tipo = 'r'
                                                       AND ca.clingua = &1
                                                          -- and l2.lingua=&1
                                                          -- AND l2.cd(+) = lbs.cd_regione
                                                       AND i.fl_lingua =
                                                           decode(&1,
                                                                  2,
                                                                  '1000',
                                                                  3,
                                                                  '0100',
                                                                  4,
                                                                  '0010',
                                                                  5,
                                                                  '0001')
                                                       AND ll.lingua = &1
                                                       AND ll2.lingua = &1
                                                       AND ll3.lingua = &1
                                                       AND ll.cd =
                                                           rag.cd_raggruppamento
                                                       AND ll2.cd = rag.cd_comune
                                                       AND ll3.tipo = 'r'
                                                       AND ll.tipo = 'ragg'
                                                       AND ll2.tipo = 'c'
                                                       AND ll3.cd = rag.cd_regione
                                                      UNION
                                                       SELECT ll.localita     dove,--rag.raggruppamento dove,
                                                              ca.ds_categoria cat,
                                                              ll3.localita    regione/*decode(l2.localita,
                                                                     NULL,
                                                                     lbs.ds_regione,
                                                                     l2.localita) regione*/
                                                         FROM mdr_inseriti            i,
                                                              seo_tmp_cat_lingua1     ca,
                                                              seo_anag_raggruppamenti rag,
                                                              mdr_anag_lbs        lbs,
                                                              seo_localita_lingua     ll,
                                                              seo_localita_lingua     ll2,
                                                              seo_localita_lingua     ll3
                                                        WHERE lbs.cd_lingua =&1 and ca.cd_categoria =
                                                              i.cd_categoria                                                        
                                                          AND lbs.cd_localita =
                                                              i.cd_localita_lbs
                                                          AND lbs.cd_comune !=0
                                                          AND cd_frazione =0
                                                          AND lbs.ds_comune = ll2.localita--rag.comune
                                                          AND ll.lingua = &1
                                                          AND ll2.lingua = &1
                                                          AND ll3.lingua = &1
                                                          AND ll.cd =
                                                              rag.cd_raggruppamento
                                                          AND ll2.cd =
                                                              rag.cd_comune
                                                          AND ll3.tipo = 'r'
                                                          AND ca.clingua = &1
                                                          AND ll.tipo =
                                                              'ragg'
                                                          AND ll2.tipo = 'c'
                                                          AND ll3.cd =
                                                              rag.cd_regione
                                                    )))
                            WHERE ca.ds_categoria(+) = cat
                            GROUP BY dove,
                                     lower(cat),
                                     ca.ds_categoria,
                                     ca.cd_categoria,
                                     regione,
                                     ca.ds_categoria) s
                    WHERE tq.qs(+) = s.cat
                      AND tq.dv(+) = s.dove
                    GROUP BY s.dove,
                             s.cat,
                             des_regione,
                             c_categoria,
                             cnt
                   UNION ALL
                   /*-----------------------frazioni-----------------------------
                   SELECT s.dove a,
                          s.cat b,
                          round((nvl(cnt, 0) ) *
                                100000 + SUM(s.COUNT)) e,
                          des_regione f,
                          c_categoria g
                     FROM seotmp_tq tq,
                          (SELECT dove dove,
                                  lower(cat) cat,
                                  COUNT(1) COUNT,
                                  regione des_regione,
                                  ca.cd_categoria c_categoria
                             FROM seo_tmp_cat_lingua1 ca,
                                  (SELECT dove,
                                          cat cat,
                                          regione
                                     FROM (
                                           --category match esatto   --il match esatto lo inserisco solo una volta
                                           SELECT dove,
                                                   cat,
                                                   regione
                                             FROM (SELECT decode(l.localita,
                                                                  NULL,
                                                                  lbs.ds_frazione,
                                                                  l.localita) || ' (' ||
                                                           lbs.ds_sigla_prov || ')' dove,
                                                           ca.ds_categoria cat,
                                                           decode(l2.localita,
                                                                  NULL,
                                                                  lbs.ds_regione,
                                                                  l2.localita) regione
                                                      FROM mdr_inserzioni_categorie c,
                                                           mdr_inserzioni           i,
                                                           seo_tmp_cat_lingua1       ca,
                                                           mdr_localita_lbs         lbs,
                                                           seo_localita_lingua      l,
                                                           seo_localita_lingua      l2
                                                     WHERE ca.cd_categoria = c.cd_categoria
                                                       AND c.pr_inserzione = i.pr_inserzione
                                                       AND lbs.cd_frazione =
                                                           get_frazione(i.cd_localita_lbs)
                                                       AND cd_frazione IS NOT NULL
                                                       AND lpad(nvl(lbs.ds_cap, 0), 5, '0') =
                                                           '00000'
                                                       AND c.cd_categoria != '000000000'
                                                       AND l.lingua = &1
                                                       AND l2.tipo = 'r'
                                                       AND l.tipo = 'f'
                                                       AND ca.clingua = &1
                                                       AND l.cd(+) = lbs.cd_frazione
                                                       AND l2.cd(+) = lbs.cd_regione
                                                       and l2.lingua=&1
                                                    UNION
                                                    SELECT decode(l.localita,
                                                                  NULL,
                                                                  lbs.ds_frazione,
                                                                  l.localita) || ' (' ||
                                                           lbs.ds_sigla_prov || ')' dove,
                                                           ca.ds_categoria cat,
                                                           decode(l2.localita,
                                                                  NULL,
                                                                  lbs.ds_regione,
                                                                  l2.localita) regione
                                                      FROM mdr_inseriti        i,
                                                           seo_tmp_cat_lingua1  ca,
                                                           mdr_localita_lbs    lbs,
                                                           seo_localita_lingua l,
                                                           seo_localita_lingua l2
                                                     WHERE ca.cd_categoria = i.cd_categoria
                                                       AND ca.cd_categoria != '000000000'
                                                       AND lbs.cd_frazione =
                                                           get_frazione(i.cd_localita_lbs)
                                                       AND cd_frazione IS NOT NULL
                                                       AND lpad(nvl(lbs.ds_cap, 0), 5, '0') =
                                                           '00000'
                                                       AND l2.tipo = 'r'
                                                       AND l.tipo = 'f'
                                                       and l2.lingua=&1
                                                       AND ca.clingua = &1
                                                       AND l.cd(+) = lbs.cd_frazione
                                                       AND l2.cd(+) = lbs.cd_regione)                        
                                           ))
                            WHERE ca.ds_categoria(+) = cat
                            GROUP BY dove,
                                     lower(cat),
                                     ca.ds_categoria,
                                     ca.cd_categoria,
                                     regione,
                                     ca.ds_categoria) s
                    WHERE tq.qs = s.cat
                      AND tq.dv = s.dove
                    GROUP BY s.dove,
                             s.cat,
                             des_regione,
                             c_categoria,
                             cnt
                   UNION ALL*/
                   ----------------------regioni------------------------------
                   SELECT s.dove a,
                          s.cat b,
                          round((nvl(cnt, 0) 
                                ) *
                                100000 + SUM(s.COUNT)) e,
                          des_regione f,
                          c_categoria g
                     FROM seotmp_tq tq,
                          (SELECT dove dove,
                                  lower(cat) cat,
                                  COUNT(1) COUNT,
                                  dove des_regione,
                                  ca.cd_categoria c_categoria
                             FROM seo_tmp_cat_lingua1 ca,
                                  (
                                   --category match esatto   --il match esatto lo inserisco solo una volta
                                   SELECT dove,
                                           cat
                                     FROM (SELECT decode(l2.localita,
                                                          NULL,
                                                          lbs.ds_regione,
                                                          l2.localita) dove,
                                                   ca.ds_categoria cat
                                              FROM mdr_inserzioni_categorie c,
                                                   mdr_inserzioni           i,
                                                   seo_tmp_cat_lingua1      ca,
                                                   mdr_anag_lbs         lbs,
                                                   seo_localita_lingua      l2
                                             WHERE lbs.cd_lingua = &1 and ca.cd_categoria =
                                                   c.cd_categoria
                                               AND c.pr_inserzione = i.pr_inserzione
                                               AND lbs.cd_localita = i.cd_localita_lbs
                                               AND cd_comune !=0
                                               AND cd_frazione =0
                                               AND l2.lingua = &1
                                               AND l2.tipo = 'r'
                                               AND ca.clingua = &1
                                               AND l2.cd(+) = lbs.cd_regione
                                               AND i.fl_lingua =
                                                   decode(&1,
                                                          2,
                                                          '1000',
                                                          3,
                                                          '0100',
                                                          4,
                                                          '0010',
                                                          5,
                                                          '0001')
                                              UNION
                                                                     SELECT decode(l2.localita,
                                                                                   NULL,
                                                                                   lbs.ds_regione,
                                                                                   l2.localita) dove,
                                                                            ca.ds_categoria cat
                                                                       FROM mdr_inseriti        i,
                                                                            seo_tmp_cat_lingua1  ca,
                                                                            mdr_anag_lbs    lbs,
                                                                            seo_localita_lingua l2
                                                                      WHERE lbs.cd_lingua =&1 and ca.cd_categoria = i.cd_categoria                                                                        
                                                                        AND lbs.cd_localita = i.cd_localita_lbs
                                                                        AND cd_comune !=0
                                                                        AND cd_frazione =0
                                                                        AND l2.lingua = &1
                                                                        AND l2.tipo = 'r'
                                                                        and l2.lingua=&1
                                                                        AND ca.clingua = &1
                                                                        AND l2.cd(+) = lbs.cd_regione
                                            ))
                            WHERE ca.ds_categoria(+) = cat
                            GROUP BY dove,
                                     lower(cat),
                                     ca.ds_categoria,
                                     ca.cd_categoria) s
                    WHERE tq.qs(+) = s.cat
                      AND tq.dv(+) = s.dove
                    GROUP BY s.dove,
                             s.cat,
                             des_regione,
                             c_categoria,
                             cnt)
            GROUP BY a,
                     b,
                     f);
exit;
Categoria(e): Informaticcia

2 commenti a Chiamatemi Sybilla

  1. Perbacco -_-

    Mandala a quelli di http://thedailywtf.com/ magari loro ne potrebbero apprezzare la “bellezza” -_-

  2. Bellissimi i tre commenti a spregio… come a dire “so benissimo come si mettono i commenti ma non ho sbatta”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Time limit is exhausted. Please reload CAPTCHA.