Visualizzazione dei risultati da 1 a 5 su 5

Discussione: errore in query access

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    643

    errore in query access

    Non capisco questo errore in Access (non so se metterlo in questo forum, però la caonnessione la faccio in un file di Asp).

    Ho una tabella con un campo nome(piu' record con lo stesso nome) e un campo valore.

    Voglio recuperare il valore piu' alto tra quelli associati ad un determinato nome.

    La query è:

    strSql = "SELECT MAX(VALORE), NOME FROM TABELLA WHERE NOME= '" & nomescelto & "'"

    Mi dà questo errore
    codice:
    Microsoft JET Database Engine (0x80040E21)
    Impossibile eseguire una query che non include l'espressione "NOME" specificata come parte di una funzione di aggregazione.
    Se io faccio la query inserendo il campo NOME all'interno di una funzione, esempio stupido:


    strSql = "SELECT MAX(VALORE), MAX(NOME) FROM TABELLA WHERE NOME= '" & nomescelto & "'"

    non mi dà piu' l'errore.

    Ma perchè se associo una funzione a un campo allora vuole anche l'altro campo in una funzione?
    grazie

  2. #2
    Se in una query tu specifichi un parametro di aggregazione per un campo come GROUP BY, Max(), Min() e simili, devi istruire il database su quale valore considerare anche per altri campi che richiami.

    Se infatti il tuo record è

    codice:
    1   Pippo  123 
    2   Pluto   24
    e vuoi prendere il max valore del campo 3, come fa a sapere il database se del campo 2 tu vuoi invece il valore massimo o altro?

    Devi specificare una funzione di raggruppamento per ogni campo che vuoi richiamare.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    643
    In effetti, avevo visto. E' che poi a me del campo NOME in questo caso non interessa, nel senso che mi interessa solo per costruire la clausola WHERE, ma non devo recuperare il suo valore.
    grazie.

  4. #4
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    Basta raggruppare per nome:

    strSql = "SELECT MAX(VALORE), NOME FROM TABELLA WHERE NOME= '" & nomescelto & "' GROUP BY NOME"
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  5. #5
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Originariamente inviato da Daisyland
    In effetti, avevo visto. E' che poi a me del campo NOME in questo caso non interessa, nel senso che mi interessa solo per costruire la clausola WHERE, ma non devo recuperare il suo valore.
    grazie.
    E allora non ti serve nemmeno raggruppare:
    codice:
    strSql = "SELECT MAX(VALORE) FROM TABELLA WHERE NOME= '" & nomescelto & "'"
    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.