Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 18 su 18
  1. #11
    pensavo che mettendo l'esempio fosse chiaro....provo a parole...

    Io ho una serie di record che per le prime...diciamo 3 colonne...sono tutti uguali.... a gruppi di 2, 3 4..ecc...

    come appunto nell'esempio

    COL1-----COL2-----COL3
    123------verde-----xxx
    123------verde-----xxx
    345------blu-------aaa
    345------blu-------aaa
    xyz------nero------bbb
    xyz------nero------bbb
    xyz------nero------bbb

    su questa tabella se faccio una distinct sulle 3 colonne....i dati mi ritornano raggruppati correttamente...e fin'ora è stato così....

    questa tabella ha però altre colonne.....
    COL1-----COL2-----COL3-----COL4----DATA---------COL5------COL6
    123------verde-----xxx-------sergio---15/01/2010---ecc...ecc.....
    123------verde-----xxx-------carlo----16/01/2010---ecc...ecc.....
    345------blu-------aaa-------marco---13/02/20120--ecc...ecc.....
    345------blu-------aaa-------paolo----14/02/20120--ecc...ecc.....
    xyz------nero------bbb-------luca-----08/03/20120--ecc...ecc.....
    xyz------nero------bbb-------pietro---09/03/20120--ecc...ecc.....
    xyz------nero------bbb-------ale------11/03/20120--ecc...ecc.....

    ora io dalla stessa tabella devo recuperare anche la 4° e la 5° colonna.....ma essendo diverse....se faccio la distinct....me le ritorna duplicate...mentre a me servirebbe prendere solo la riga con il nome e con la data più recente.... quindi...

    COL1-----COL2-----COL3-----COL4----DATA---------COL5------COL6
    123------verde-----xxx-------carlo----16/01/2010---ecc...ecc.....
    345------blu-------aaa-------paolo----14/02/20120--ecc...ecc.....
    xyz------nero------bbb-------ale------11/03/20120--ecc...ecc.....


    nn so se mi sono spiegato

  2. #12
    Ribadisco la mia idea, basta dire che le si vuole distinct:

    SELECT DISTINCT col1, col2, col3, col4 WHERE data=max(data)
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  3. #13
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    Originariamente inviato da Shores
    Ribadisco la mia idea, basta dire che le si vuole distinct:

    SELECT DISTINCT col1, col2, col3, col4 WHERE data=max(data)
    no, non va bene in quanto ti darà come risultato solo quello della data massima.

    Bisogna fare un group by e ovviamente utilizzare anche il max(data). e poi utilizzare un'altra query in join con il risultato di prima. Quindi query e sottoquery.

    ps: inoltre, il problema è che questa tabella è stata fatta male
    I got the remedy

  4. #14
    Che è ESATTAMENTE quello che ha chiesto lui...

    Originariamente inviato da elsinore77
    ...
    mentre a me servirebbe prendere solo la riga con il nome e con la data più recente.... quindi...
    ...
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  5. #15
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    io ho capito che lui vuole una riga per ogni data massima delle 3 colonne COL1,COL2,COL3.
    Infatti ha scritto:
    Originariamente inviato da elsinore77
    ....la riga con il nome e con la data più recente.... quindi...

    COL1-----COL2-----COL3-----COL4----DATA---------COL5------COL6
    123------verde-----xxx-------carlo----16/01/2010---ecc...ecc.....
    345------blu-------aaa-------paolo----14/02/20120--ecc...ecc.....
    xyz------nero------bbb-------ale------11/03/20120--ecc...ecc.....
    I got the remedy

  6. #16
    Originariamente inviato da albgen
    io ho capito che lui vuole una riga per ogni data massima delle 3 colonne COL1,COL2,COL3.
    Infatti ha scritto:
    Comunque sia, hai ragione: dovrebbe mettere tutti quelle colonne che contengono valori che sono comuni a più record in una tabella a parte, e poi usare un id esterno.
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  7. #17
    premetto che concordo sul fatto che sta vista è stata fatta male!


  8. #18
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    Se la tabella si chiama "test" allora basta fare:


    SELECT test.* FROM
    test,
    (
    SELECT COL1,COL2,COL3,MAX(DATA) AS DATA
    FROM test
    GROUP BY COL1,COL2,COL3
    ) AS T1

    WHERE
    test.COL1 = T1.COL1 AND
    test.COL2 = T1.COL2 AND
    test.COL3 = T1.COL3 AND
    test.DATA = T1.DATA

    Ho utilizzato GROUP BY, PRODOTTO SCALARE, CLAUSOLA WHERE.
    Ti consiglio di studiarli e se ti vedo che fai domande simili sono cavoli amari .
    I got the remedy

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