Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Query access

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    84

    Query access

    Salve a tutti,

    ho iniziato da poco a lavorare con Access per fare dei database. Prima ero abituato con MySQL.
    Per questo volevo chiedervi come potevo risolvere questo probelma.
    Ho una tabella con dei clienti importati da un sistema e devo raggrupparli per numero di fax rappresentando però anche il nome, cognome, inidirizzo ecc...

    l'ho fatta ma mi da errore "Impossibile eseguire una query che non include l'espressione "nome" specificata come parte di una funzione di aggregazione" perchè esistono più nomi per lo stesso numero di Fax.

    Il mio risultato dev'essere estrarre il numero di fax che però abbia la data maggiore. In MySQL era più semplice, ma qui non so proprio come fare

    Grazie

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333

    Re: Query access

    Originariamente inviato da sandalf
    devo raggrupparli per numero di fax rappresentando però anche il nome, cognome, inidirizzo ecc...

    "Impossibile eseguire una query che non include l'espressione "nome" specificata come parte di una funzione di aggregazione"

    Se raggruppi per Fax devi dirgli cosa fare nel caso ci siano piu nomi
    Quindi devi dirgli Max Min Primo Ultimo Count Ecc...
    comunque qualcosa devi specificarlo

    Questa è la logica a cui Tutti i DB ( incluso MySql ) si sottomettono


    __________________________________________________ ________


    Diversamente ti virne fuori esattamente quell'errore.


    Del resto se tu hai 2 nomi con lo stesso fax
    Cosa vuoi vedere ???

    Se vuoi vedere 2 righe ( record ) devi raggruppare anche per nome


    __________________________________________________ ______
    __________________________________________________ ______

    Postaci NomeTabella NomeCampi TipoDati
    e qualche record di esempio


    Saluti

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    84
    In MySQL riuscivo a fare:

    codice:
    SELECT nome,cognome,indirizzo,telefono,fax FROM (SELECT * FROM tb ORDER BY data DESC) AS tb_tmp GROUP BY fax
    mentre in access non mi lascia

    ho risolto comunque facendo

    codice:
    SELECT MAX(data) AS data_ultima, MAX(nome) AS nome,MAX(cognome) AS cognome, MAX(indirizzo) AS indirizzo, MAX(telefono) AS telefono, fax FROM tb GROUP BY fax
    non so se ho fatto giusto, ma almeno ho ottenuto quello che volevo.

    Cosa ne dite?

  4. #4
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quella seconda query che ci esponi sopra non è corretta perche
    Ti raggruppa x fax
    all'interno del gruppo ti prende l'ultima data
    all'interno del gruppo ti prende il Max nome
    eccetera

    Ma l'ultima data non corrisponde necessariamente al Max Nome
    per cui i record si "miscelamo" all'interno del gruppo
    ____( spero di essere comprensibile )

    Se tu mi dici che va comunque bene perche se il fax
    e uguale anche il nome lo deve essere allora va tutto bene
    ma!!!!

    __________________________________________________ _________
    __________________________________________________ _________



    Se ho capito bene hai una tabella di nome "tb" composta da:

    data _________ dataora
    nome ________ Testo
    cognome _____ Testo
    indirizzo ______ Testo
    telefono ______ Testo
    fax __________ Testo

    Non vedo campi chiave o indici
    ( Il formato dei campo lo desumo dai nomi )

    __________________________________________________ __

    Tu vuoi raggruppare per "fax" e di ogni gruppo
    prendere il RECORD con la massima data


    Se le premesse sono corrette allora la query
    potrebbe essere una nidificata che
    prima seleziona solamente fax e Maxdata
    Poi la mette in join con la tabella intera

    codice:
    SELECT 
    tb.data, 
    tb.fax, 
    tb.nome, 
    tb.cognome, 
    tb.indirizzo, 
    tb.telefono 
    FROM 
    tb 
    INNER JOIN 
    ( 
    SELECT 
    Max(tb.data) AS MxDa, 
    tb.fax 
    FROM tb 
    GROUP BY tb.fax 
    ) AS q1 
    ON (tb.fax = q1.fax) AND (tb.data = q1.MxDa) 
    ;




    Saluti

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    84
    Ci sono alcune volte che il nome che corrisponde al fax multiplo è uguale per tutti i fax multipli e altre volte che lo stesso fax corrisponde a più nomi, ma a me interessa che il fax sia solo uno e mi interessa avere il fax con data maggiore indifferentemente dal nome del contatto.

    Comunque grazie mille dell'aiuto. Quella query è effettivamente la più giusta nman.

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