Visualizzazione dei risultati da 1 a 5 su 5

Discussione: group by in SQL

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

    group by in SQL

    Ciao a tutti,

    sono alle prese con una select SQL che non riesco a "vedere"

    ho le tabelle:


    PERSONA (idPersona, Nome)
    POSSIEDE (IdPersona, IdAutomobile, Data_Acquisto)
    AUTOMOBILE (IdAutomobile, Targa)

    Come fare una query che mi selezioni tutte le persone che possiedono un'auto, ma solo l'ultima acquistata?

    Grazie in anticipo per qualsiasi risposta!!
    Sono un genio ma non riesco a capire come funziona la mia genialità...

  2. #2
    Per ottenere il risultato che vuoi io ho utilizzato due query, una nell'altra. Mi spiego:
    la prima trova la dataAcquisto più recente, la seconda trova la persona in base alla dataAcquisto che ho trovato nella prima query.

    Ti scrivo l'SQL delle due query separatamente:

    1. SELECT Max(Possiede.DataAcquisto) AS MaxDiDataAcquisto FROM Possiede;

    2. SELECT Automobile.IdAutomobile, Possiede.DataAcquisto AS Data, Persona.Nome, Automobile.Targa
    FROM qryData LEFT JOIN (Persona RIGHT JOIN (Automobile RIGHT JOIN Possiede ON Automobile.IdAutomobile
    = Possiede.IdAutomobile) ON Persona.idPersona = Possiede.IdPersona) ON qryData.MaxDiDataAcquisto =
    Possiede.DataAcquisto ORDER BY Persona.Nome;


    considera che il campo Data_Acquisto l'ho chiamato DataAcquisto, xchè mi dava problemi _
    vedi se può andarti bene.

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    22
    mi spiego meglio:

    l'ultima macchina acquistata dalla singola persona... quindi non devo cercare l'ultima data in assoluto ma l'ultima data per **ogni persona**

    è possibile farlo con un'unica query??

    grazie cmq
    Sono un genio ma non riesco a capire come funziona la mia genialità...

  4. #4
    io ce l'ho fatta solo con due query:

    1. SELECT Persona.idPersona, Persona.Nome, First
    (Possiede.DataAcquisto) AS PrimoDiDataAcquisto
    FROM Persona LEFT JOIN (Automobile RIGHT JOIN Possiede ON
    Automobile.IdAutomobile = Possiede.IdAutomobile) ON Persona.idPersona
    = Possiede.IdPersona
    GROUP BY Persona.idPersona, Persona.Nome
    ORDER BY Persona.Nome;

    2. SELECT qryUltimaPerPersona.Nome,
    qryUltimaPerPersona.PrimoDiDataAcquisto AS Data, Automobile.Targa
    FROM qryUltimaPerPersona LEFT JOIN (Automobile RIGHT JOIN Possiede ON
    Automobile.IdAutomobile = Possiede.IdAutomobile) ON
    qryUltimaPerPersona.PrimoDiDataAcquisto = Possiede.DataAcquisto
    ORDER BY qryUltimaPerPersona.Nome;


    non sono riuscita a fare di meglio. Magari qualcun altro può darti un suggerimento migliore.

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    22
    grazie, provo subito!

    Sono un genio ma non riesco a capire come funziona la mia genialità...

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.