Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di kobe83
    Registrato dal
    Sep 2008
    Messaggi
    89

    [SQL] problema di ordinamento

    Ciao!

    Vorrei in un'unica query estrarre i record da un join tra due tabelle ordinati per data e raggruppati per codice. Il tutto deve essere fatto necessariamente in un'unica query.
    Ecco, a pezzi come ho provato ad ottenere il risultato che voglio:

    qui estraggo tutti i campi che mi interessano in comune tra le due tabelle ordinati per data:


    codice:
    SELECT distinct cky_art, dtt_doc, cky_cnt_clfr
    FROM zeus_ordc_m INNER JOIN zeus_ordc_d 
    ON zeus_ordc_m.azienda = zeus_ordc_d.azienda 
    AND zeus_ordc_m.csg_doc = zeus_ordc_d.csg_doc 
    AND zeus_ordc_m.ngb_sr_doc = zeus_ordc_d.ngb_sr_doc 
    AND zeus_ordc_m.ngl_doc = zeus_ordc_d.ngl_doc 
    WHERE cky_cnt_clfr = '501.00001'
    order by dtt_doc desc
    e fin qua niente di strano. Mi viene restituito il risultato della mia query ordinato per data. Ora voglio fare un distinct dei codici (cky_art) in modo che non ci siamo codici ripetuti

    codice:
    select distinct cky_art from(SELECT distinct cky_art, dtt_doc, cky_cnt_clfr
    FROM zeus_ordc_m INNER JOIN zeus_ordc_d 
    ON zeus_ordc_m.azienda = zeus_ordc_d.azienda 
    AND zeus_ordc_m.csg_doc = zeus_ordc_d.csg_doc 
    AND zeus_ordc_m.ngb_sr_doc = zeus_ordc_d.ngb_sr_doc 
    AND zeus_ordc_m.ngl_doc = zeus_ordc_d.ngl_doc 
    WHERE cky_cnt_clfr = '501.00001'
    order by dtt_doc desc
    )
    e qua c'è l'inghippo.... mi raggruppa si i codici... ma l'ordinamento per data è andato e me li mette con un ordine casuale.

    Sapere dunque dirmi dove stò sbagliando?
    Ci sono TRE tipi di persone al mondo: quelli che ragionano in binario e quelli che no

  2. #2
    Utente di HTML.it L'avatar di kobe83
    Registrato dal
    Sep 2008
    Messaggi
    89
    niente? nemmeno una pacca sulla spalla?
    Ci sono TRE tipi di persone al mondo: quelli che ragionano in binario e quelli che no

  3. #3
    Utente di HTML.it L'avatar di r1cky`
    Registrato dal
    Feb 2007
    Messaggi
    432
    Originariamente inviato da kobe83
    niente? nemmeno una pacca sulla spalla?
    E' difficile che su un forum ti rispondano entro un ora...
    Comunque te la butto li, secondo me la order by è meglio metterla fuori, in questo modo:

    codice:
    select distinct cky_art from (SELECT distinct cky_art, dtt_doc, cky_cnt_clfr
    FROM zeus_ordc_m INNER JOIN zeus_ordc_d 
    ON zeus_ordc_m.azienda = zeus_ordc_d.azienda 
    AND zeus_ordc_m.csg_doc = zeus_ordc_d.csg_doc 
    AND zeus_ordc_m.ngb_sr_doc = zeus_ordc_d.ngb_sr_doc 
    AND zeus_ordc_m.ngl_doc = zeus_ordc_d.ngl_doc 
    WHERE cky_cnt_clfr = '501.00001'
    ) AS A
    order by dtt_doc desc
    Poi sinceramente non capisco perchè fai due distinct...

  4. #4
    Utente di HTML.it L'avatar di kobe83
    Registrato dal
    Sep 2008
    Messaggi
    89
    Originariamente inviato da r1cky`
    E' difficile che su un forum ti rispondano entro un ora...
    Comunque te la butto li, secondo me la order by è meglio metterla fuori, in questo modo:

    codice:
    select distinct cky_art from (SELECT distinct cky_art, dtt_doc, cky_cnt_clfr
    FROM zeus_ordc_m INNER JOIN zeus_ordc_d 
    ON zeus_ordc_m.azienda = zeus_ordc_d.azienda 
    AND zeus_ordc_m.csg_doc = zeus_ordc_d.csg_doc 
    AND zeus_ordc_m.ngb_sr_doc = zeus_ordc_d.ngb_sr_doc 
    AND zeus_ordc_m.ngl_doc = zeus_ordc_d.ngl_doc 
    WHERE cky_cnt_clfr = '501.00001'
    ) AS A
    order by dtt_doc desc
    Poi sinceramente non capisco perchè fai due distinct...

    Grazie, hai ragione ma stò uscendo pazzo. Purtroppo non sono molto esperto e mi trovo in difficoltà..

    Nella query che mi hai suggerito mi dice che la clausola order by(dtt_doc) è in conflitto con distinct. Giustamente dico io, dato che distinct mi raggruppa i campi.
    Quindi se io provo a fare in questo modo:

    codice:
    select distinct cky_art from(
    select cky_art from (SELECT distinct cky_art, dtt_doc, cky_cnt_clfr
    FROM zeus_ordc_m INNER JOIN zeus_ordc_d 
    ON zeus_ordc_m.azienda = zeus_ordc_d.azienda 
    AND zeus_ordc_m.csg_doc = zeus_ordc_d.csg_doc 
    AND zeus_ordc_m.ngb_sr_doc = zeus_ordc_d.ngb_sr_doc 
    AND zeus_ordc_m.ngl_doc = zeus_ordc_d.ngl_doc 
    WHERE cky_cnt_clfr = '501.00001'
    ) AS A
    order by dtt_doc desc
    )
    mi vengono restituiti si i codici raggruppati, ma l'ordinamento per data è inevitabilmente perso. E' questo che non riesco a capire.
    Ci sono TRE tipi di persone al mondo: quelli che ragionano in binario e quelli che no

  5. #5
    Utente di HTML.it L'avatar di r1cky`
    Registrato dal
    Feb 2007
    Messaggi
    432
    Sinceramente io farei in questo modo:

    codice:
    SELECT distinct(cky_art)
    FROM zeus_ordc_m INNER JOIN zeus_ordc_d 
    ON zeus_ordc_m.azienda = zeus_ordc_d.azienda 
    AND zeus_ordc_m.csg_doc = zeus_ordc_d.csg_doc 
    AND zeus_ordc_m.ngb_sr_doc = zeus_ordc_d.ngb_sr_doc 
    AND zeus_ordc_m.ngl_doc = zeus_ordc_d.ngl_doc 
    WHERE cky_cnt_clfr = '501.00001'
    ORDER BY dtt_doc,desc
    Ti ho messo una virgola nell'order by, che secondo me ci vuole, provala.

  6. #6
    Utente di HTML.it L'avatar di kobe83
    Registrato dal
    Sep 2008
    Messaggi
    89
    Ho provato a fare come mi dici tu, ma mi dà un errore nella clausola "order by", secondo me perchè dtt_doc non è compreso nell'insert.
    Ho provato in questo modo:

    codice:
    SELECT distinct(cky_art), dtt_doc
    FROM zeus_ordc_m INNER JOIN zeus_ordc_d 
    ON zeus_ordc_m.azienda = zeus_ordc_d.azienda 
    AND zeus_ordc_m.csg_doc = zeus_ordc_d.csg_doc 
    AND zeus_ordc_m.ngb_sr_doc = zeus_ordc_d.ngb_sr_doc 
    AND zeus_ordc_m.ngl_doc = zeus_ordc_d.ngl_doc 
    WHERE cky_cnt_clfr = '501.00001'
    ORDER BY dtt_doc desc
    i campi mi vengono ordinati per data ma essendoci sia cky_art che dtt_doc nella distinct mi raggruppa i record con dtt_doc e cky_art uguali.
    Non so più che pesci pigliare...
    Ci sono TRE tipi di persone al mondo: quelli che ragionano in binario e quelli che no

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.