Problema creazione query

di il
3 risposte

Problema creazione query

Buongiorno a tutti,
ho un problema nel creare una query che mi restituisca le informazioni che mi servono (Access 2013).
Probabilmente si riesce a risolvere con semplici comandi SQL, ma essendo alle prime armi non riesco ad uscirne:
ho una tabella contenente i dati di persone (nome, cognome, etc), poi ho un'altra tabella contenente i contatti avuti con queste persone (data contatto, descrizione, etc). La relazione è semplicemente genitore-figli, quindi per ogni persona posso avere 1 o più contatti (o 0).
Ciò che vorrei fare, è avere un elenco delle persone con cui ho avuto contatti, ma visualizzando solo l'ultimo contatto.
Con una query semplice, infatti, ottengo qualcosa del tipo:
mario---rossi---12mar14---blabla
mario---rossi---11mar14---blabdsgfsd
carlo---bianchi---15apr14---gfgfgfg

mentre ciò che vorrei ottenere è un filtro sull'ultimo contatto avuto:
mario---rossi---12mar14---blabla
carlo---bianchi---15apr14---gfgfgfg

Sapreste aiutarmi?
Grazie in anticipo

3 Risposte

  • Re: Problema creazione query

    Questa Query realizza quello che chiedi sul prezzo più alto di un elenco prodotti...

    Adattala al tuo caso che invece coinvolge la DATA
    
    Select T1.Provenienza,MAXP.IdProdotto,MAXP.Massimo
        From T1
        RIGHT JOIN
            (select IdProdotto, Max(Prezzo) as Massimo
             From T1
             Group By IdProdotto) AS MAXP
        ON T1.IdProdotto=MAXP.IdProdotto AND T1.Prezzo=MAXP.Massimo
  • Re: Problema creazione query

    Grazie mille Alex, il tuo consiglio mi ha messo sulla strada giusta.
    Sono riuscito ad ottenere quello che cercavo in questo modo:
    SELECT [Cognome] & ", " & [Nome] AS NomeComp, Last(Contatti.Data) AS UltimoDiData,Last(Contatti.Oggetto) AS UltimoDiOggetto
    FROM Società RIGHT JOIN (Persone INNER JOIN Contatti ON Persone.ID = Contatti.PersonaContattata) ON Società.ID = Persone.Società
    GROUP BY [Cognome] & ", " & [Nome], Società.RagioneSociale, Persone.StatoContatto, Contatti.TrattativaConclusa
    ORDER BY Last(Contatti.Data);
    è un pochino diverso da quello che avevo chiesto perché ho recuperato informazioni anche da una terza tabella (Società). Rispetto al tuo, però, per trovare la data più recente ho scritto direttamente "Last" (oppure "Max") in Select, invece di fare quella "query nella query" che hai proposto nel tuo esempio.
    Sapresti dirmi vantaggi e svantaggi, e se comunque il mio approccio può essere valido e generale?

    Infine, Vorrei un tuo consiglio, se possibile, sull'utilizzo di Last/Max: come vedi io devo recuperare due campi relativi allo stesso record dalla tabella Contatti: Contatti.Data e Contatti.Oggetto (in particolare voglio i più recenti per ogni persona). Se uso max su entrambi i due campi non sono collegati tra loro, mentre se uso last nessuno mi garantisce che siano i più recenti (nel caso in cui sia stato inserito un contatto passato per ultimo). Consigli su come usare il max ed essere sicuro che i due campi si riferiscano allo stesso record?

    Grazie di nuovo
  • Re: Problema creazione query

    Qualcuno sa consigliarmi?
Devi accedere o registrarti per scrivere nel forum
3 risposte