Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    109

    [SQL] Query??!!

    Ciao,avrei un problema relativo ad una query sql in access. Ho una tabella con campi simile alla seguente

    CAMPI: CODICE NUMERO NOTE
    1000 2 blablabla
    1000 1 ciao
    1054 3 fdoshfshf
    1054 2 dfaefv
    1054 1 ryrtyjk
    1076 1 bbcvb

    ovviamente la mia è una ricostruzione banale del problema; i record sono ordinati in modo crescente secondo codice e in modo decrescente secondo numero; praticamente devo prendere per ogni singolo codice la prima riga, cioè quella con il NUMERO maggiore (perchè ultima ad essere stata inserita).
    Vi sarei molto grato riusciste ad aiutarmi.

    Grazie

  2. #2

    Re: [SQL] Query??!!

    Originariamente inviato da arti86 .....

    Ho una tabella con campi simile alla seguente

    CAMPI: CODICE NUMERO NOTE
    1000 2 blablabla
    1000 1 ciao
    1054 3 fdoshfshf
    1054 2 dfaefv
    1054 1 ryrtyjk
    1076 1 bbcvb

    .....i record sono ordinati in modo crescente secondo codice e in modo decrescente secondo numero; praticamente devo prendere per ogni singolo codice la prima riga, cioè quella con il NUMERO maggiore (perchè ultima ad essere stata inserita).
    ..........
    Grazie
    select Codice, Max(Numero) from Tabella group by codice

    ... però mi sembra troppo banale; forse mi sfugge qualcosa ?

    EDIT

    .. ecco cosa mi sfuggiva
    .... praticamente devo prendere per ogni singolo codice la prima riga...

    non l'ho provata ma dovrebbe andare

    codice:
    Select  T.*, Q.* from 
    Tabella T
    inner join
    (select Codice , Max(Numero) as MaxNumero from Tabella group by codice) as Q 
    on T.Codice=Q.Codice AND T.Numero=Q.MaxNumero
    P.S.
    - presuppone che ci sia un solo NUMERO massimo
    - la select .. max(numero)... potresti registrala come query sul db

    HTH sspintux

  3. #3

    Re: Re: [SQL] Query??!!

    Originariamente inviato da sspintux
    ....forse mi sfugge qualcosa ?
    chiedo scusa...
    ....ho corretto la risposta precedente troppo tardi
    per cui ne riporto l'essenziale in una nuova

    .. ecco cosa mi sfuggiva :
    .... praticamente devo prendere per ogni singolo codice la prima riga...

    non l'ho provata ma dovrebbe andare

    codice:
    Select  T.*, Q.* from 
    Tabella T
    inner join
    (select Codice , Max(Numero) as MaxNumero from Tabella group by codice) as Q 
    on T.Codice=Q.Codice AND T.Numero=Q.MaxNumero

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    109

    Re

    Ciao, ti ringrazio per l'aiuto, ho qualche difficoltà però a capire la logica della query. Come mai usa un join? Ti chiedo scusa ma potresti spiegarmi a parole il suo funzionamento?

    Grazie ancora

  5. #5
    Ci provo anche se non sono molto bravo a spiegare;

    se esegui questa da sola:

    select Codice , Max(Numero) as MaxNumero from Tabella group by codice

    con i tuoi dati

    CAMPI: CODICE NUMERO NOTE
    1000 2 blablabla
    1000 1 ciao
    1054 3 fdoshfshf
    1054 2 dfaefv
    1054 1 ryrtyjk
    1076 1 bbcvb

    ottieni :

    CODICE MAXNUMERO
    1000 2
    1054 3
    1076 1

    immagina ora di materializzarla come una tabella di nome Q
    (in effetti potresti salvarla come View/Query in access)

    (select Codice , Max(Numero) as MaxNumero from Tabella group by codice) as Q

    ... ed a questo punto mi pare superfluo aggiungere altro

    HTH sspintux

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    109

    Re

    Ciao, sto impazzendo. A parte il fatto sembra sia un problema che si verifica in modo diverso in base alla versione di access.
    Comunque quando cerco di eseguire la query aggiungendo anche il campo note mi da il seguente messaggio: "impossibile eseguire una query che non include l'espressione "note" specificata come parte di una funzione di aggregazione".

    Aiutatemiiiiiiiiiiiiiiiii

  7. #7

    Re: Re

    Originariamente inviato da arti86
    Ciao, sto impazzendo. A parte il fatto sembra sia un problema che si verifica in modo diverso in base alla versione di access.
    Comunque quando cerco di eseguire la query aggiungendo anche il campo note mi da il seguente messaggio: "impossibile eseguire una query che non include l'espressione "note" specificata come parte di una funzione di aggregazione".

    Aiutatemiiiiiiiiiiiiiiiii

    ....dal messaggio di errore sembra che tu abbia ''sbagliato" a scrivere la query,
    ma potrebbe anche dipendere dal fatto (che prima non avevo notato)
    che "Note" è un nome riservato in access e quindi va scritto tra parentesi quadre
    se usato come nome di campo.

    In conclusione puoi mostrarci la query ?

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    109

    RE

    SELECT max([commessa]) AS comme, [codice], [note]
    FROM tabella1
    GROUP BY [codice];

  9. #9
    ....è ovvio che così non può funzionare (ed il messaggio di errore è molto chiaro)

    ....ma hai letto quello che ho cercato , senza dubbio molto male, di spiegare ?

    la query che devi usare è quella con gli inner join che ti ho già postato.

    HTH sspintux

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    109
    Ciao, scusa, il fatto è che non capivo perchè avrei dovuto usare un join. provo e ti faccio sapere.

    Grazie

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.