Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 19 su 19
  1. #11

  2. #12
    E se l'intento fosse (come in realtà è) semplicemente quello di aggiungere un campo ULTIMO che distingue attribuendo semplicemente anche un VALORE 'SI' o un 'NO' a seconda che siano gli ultimi record (ordinati per data) raggruppati per identificativo?


    Esempio:


    dalla solita tabella del tipo di cui sopra:


    id_______data_______identificativo_______altro1___ ____altro2
    1_____10/08/22________1234___________aaaa________yyyy
    2_____12/01/24________1100___________bbbb________cccc
    3_____15/11/23________8333___________dddd________rrrr
    4_____13/05/24________1100___________cccc________tttt
    5_____17/01/24________1234___________zzzz________iiii
    6_____12/03/25________9465___________yyyy________ssss
    7_____21/02/28________1234___________xxxx________kkkk
    8_____08/10/24________8333___________zzzz________qqqq


    restituisse la medesima tabella con il campo ULTIMO:


    id_______data_______identificativo_______altro1___ ____altro2___ ____ULTIMO
    1_____10/08/22________1234___________aaaa________yyyy_________ _NO
    2_____12/01/24________1100___________bbbb________cccc_________ _NO
    3_____15/11/23________8333___________dddd________rrrr_________ _NO
    4_____13/05/24________1100___________cccc________tttt_________ _SI
    5_____17/01/24________1234___________zzzz________iiii_________ _NO
    6_____12/03/25________9465___________yyyy________ssss_________ _SI
    7_____21/02/28________1234___________xxxx________kkkk_________ _SI
    8_____08/10/24________8333___________zzzz________qqqq_________ _SI
    Prima o poi anch'io vi insegnerò qualcosa

  3. #13
    fai la prima query (quella che ti ricava gli ultimi), poi la metti in JOIN (a destra) con la query complessiva, tramite l'ID. Dove l'ID corrisponde, quello è l'ultimo

  4. #14
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    537
    vedi se ti va bene con un passo in piu'
    ammesso che id rispetti l'ordine temporale di inserimento nella tabella
    valore piu' alto inserimento piu' recente

    codice:
    select
      t3.identificativo
    , t3.data
    , t3.id
    , t4.altro1
    , t4.altro2
    from
    (select 
      t1.identificativo
    , t1.data 
    , max(t2.id) as id
    from
    (select identificativo, max(data) as data from tabella group by identificativo) t1
    left join tabella t2 on t1.identificativo = t2.identificativo and t1.data = t2.data
    group by t1.identificativo, t1.data
    ) t3
    left join tabella t4 on t3.identificativo = t4.identificativo and t3.data = t4.data and t3.id = t4.id
    order by t3.data desc, t3.identificativo
    codice:
    tabella
    12    2024-05-13    1100    a12   b12
    4     2024-05-13    1100    a4    b4
    2     2024-01-12    1100    a2    b2
    7     2028-02-21    1234    a7    b7
    5     2024-01-17    1234    a5    b5
    1     2022-08-10    1234    a1    b1
    13    2024-10-08    8333    a13   b13
    8     2024-10-08    8333    a8    b8
    3     2023-11-15    8333    a3    b3
    6     2025-03-12    9465    a6    b6
    99    9999-12-31    9999    a99   b99
    
    
    risultato
    9999    9999-12-31    99    a99    b99
    1234    2028-02-21    7     a7     b7
    9465    2025-03-12    6     a6     b6
    8333    2024-10-08    13    a13    b13
    1100    2024-05-13    12    a12    b12
    Ultima modifica di marino51; 23-03-2025 a 14:48

  5. #15
    Cambiata quindi la mia esigenza nell'elencare tutti i record ma identificare facilmente gli identificativi che hanno data più alta, e testati vari suggerimenti, ho risolto così:

    SELECT
    `identificativo` AS `IDENTIFICATIVO`,
    `data` AS `DATA`,
    `id` AS `ID`,
    `altro1` AS `ALTRO1`,
    `altro2` AS `ALTRO2`,
    ROW_NUMBER() OVER(PARTITION BY `identificativo` ORDER BY `data` DESC) AS `NUMERAZIONE_PER_GRUPPO`
    FROM `tabella`
    ORDER BY `data` DESC

    Mi è sembrata la soluzione più semplice (tutti i record con la `NUMERAZIONE_PER_GRUPPO` = 1 sono i record con data più alta).

    Qualche controindicazione?
    Ultima modifica di riccardo1975; 27-03-2025 a 16:13
    Prima o poi anch'io vi insegnerò qualcosa

  6. #16
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    537
    nel mio ultimo post, puoi vedere la tua tabella
    con l'aggiunta di due elementi doppi, rispettivamente gli id 12 e 13
    gli id più alti (auto numerazione) dovrebbero identificare le righe inserite nella tabella per ultime
    con la tua ultima query non selezioni gli ultimi inserimenti a parità di identificativo e data

    codice:
    1234	2028-02-21	7	a7	b7	1
    9465	2025-03-12	6	a6	b6	1
    8333	2024-10-08	8	a8	b8	1
    8333	2024-10-08	13	a13	b13	2
    1100	2024-05-13	4	a4	b4	1
    1100	2024-05-13	12	a12	b12	2
    1234	2024-01-17	5	a5	b5	2
    1100	2024-01-12	2	a2	b2	3
    8333	2023-11-15	3	a3	b3	3
    1234	2022-08-10	1	a1	b1	3
    se ho capito bene, non rispetti la necessità di estrarre gli ultimi record inseriti per ciascun gruppo

  7. #17
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    537
    potresti aggiungere

    ORDER BY data DESC, id DESC

    per ottenere
    codice:
    1234    2028-02-21    7      a7    b7    1
    9465    2025-03-12    6      a6    b6    1
    8333    2024-10-08    13     a13   b13   1  <----
    8333    2024-10-08    8      a8    b8    2
    1100    2024-05-13    12     a12   b12   1  <----
    1100    2024-05-13    4      a4    b4    2
    1234    2024-01-17    5      a5    b5    2
    1100    2024-01-12    2      a2    b2    3
    8333    2023-11-15    3      a3    b3    3
    1234    2022-08-10    1      a1    b1    3

  8. #18
    Perdonami non riesco a capire che cosa non torna. Mi pare che almeno nell'esempio tutto fili liscio
    Prima o poi anch'io vi insegnerò qualcosa

  9. #19
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    537
    tutto va bene se non ci sono combinazioni doppie di identificativo-data
    nel caso invece dovesse esistere la condizione, non é garantito che il record estratto sia l'ultimo inserito
    confronta il risultato della tua query con e senza "ORDER BY ..... id DESC"
    in particolare nel mio esempio controlla id 12 e 13
    poi decidi secondo la tua fattispecie

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 © 2025 vBulletin Solutions, Inc. All rights reserved.