Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [SQL] Qual'è il maggiore?

    Ciao a tutti
    io ho questa tabella
    codice:
    -------------------------
    ID|ID_Categoria|Posizione
    -------------------------
     1|      <null>|        1
     2|      <null>|        2
     3|      <null>|        3
     4|      <null>|        4
     5|           1|        1
     6|           1|        2
     7|           1|        3
     8|           2|        1
     9|           2|        2
    -------------------------
    Qual'è la sintassi giusta (in sql) per estrarre l'ID del record con Max(Posizione) per ogni ID_Categoria?
    Cioè:
    codice:
    ------------
    ID|Posizione
    ------------
     4|        4
     7|        3
     9|        2
    ------------
    Ho provato con:
    codice:
    SELECT ID, Max(Posizione) AS MaxDiPosizione
    FROM Tabella
    GROUP BY ID_Categoria
    Ma mi da errore :master:
    Grazie

  2. #2
    Ho provato anche con :
    codice:
    SELECT ID_Categoria, Max(Posizione) AS MaxDiPosizione
    FROM Tabella
    GROUP BY ID_Categoria
    E ottengo:
    codice:
    ---------------------------
    ID_Categoria|MaxDiPosizione
    ---------------------------
          <null>|             4
               1|             3
               2|             2
    ---------------------------
    Ma facendo una JOIN con gli ID_Categoria non riesco ottere l'ID record per quei record che hanno l'ID_Categoria NULL


  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    90

    usa una tabella temporanea....

    e ce la fai.
    Prova così :

    SELECT ID_categoria, Max(Posizione) AS MAXPosizione
    into #tmp
    FROM Tabella
    GROUP BY ID_Categoria

    select Tabella.id, Tabella.Posizione
    from Tabella,
    #Tmp
    where isnull(Tabella.Id_Categoria,'') = isnull #Tmp.Id_Categoria,'')
    and Tabella.Posizione = #Tmp.MAXPosizione

    La funzione ISNULL serve pe la join tra campi a null.
    Ciao.
    Roby

  4. #4
    E in access?
    IsNull in Access funziona in modo diverso che in SQL.

  5. #5
    Mi sono creato una vista (vw_Max) con la seguente query:
    codice:
    SELECT ID_Categoria, Max(Posizione) AS MaxDiPosizione
    FROM Tabella
    GROUP BY ID_Categoria
    Dopo di che in ACCESS ho provato a fare
    codice:
    SELECT 
        ID, 
        Posizione
    FROM 
        Tabella, 
        vw_Max
    WHERE 
        Tabella.Posizione = vw_Max.MaxDiPosizione AND
        IIF(IsNull(Tabella.ID_Categoria), '', Tabella.ID_Categoria) = IIF(IsNull(vw_Max.ID_Categoria), '', vw_Max.ID_Categoria)
    Ma ovviamente da errore

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    90

    la query seguente funziona ma...

    non riconosce i campi a null;dovresti,se possibile, rimpiazzarli con un altro qualsiasi valore (Spaces per esempio) già sui records di partenza.
    Comunque eccoti la query access :

    SELECT Tabella.ID_Categoria, Max(Tabella.Posizione) AS MaxDiPosizione1, Max(Tabella.ID) AS MaxDiID
    FROM vw_Max INNER JOIN Tabella ON vw_Max.ID_Categoria = Tabella.ID_Categoria
    GROUP BY Tabella.ID_Categoria;


    Ciao.
    Roby

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.