Aiuto per una query

di il
6 risposte

Aiuto per una query

Devo scrivere una query:
ho una tabella articoli:
codiceArticolo, nomeArticolo

ho una tabella listino
codiceArticolo, prezzodiListino, data

Considerando che nella tabella listino ho per lo stesso articolo diversi prezzi in diversi date,
voglio estrapolare per ogni articolo un solo prezzodiListino che va scelto in base all'ultima data inserita (quindi che ha una data maggiore rispetto agli altri)

Esempio:

Tabella listino:

CodiceArticolo prezzodiListino data

0000 50 20/08/2012
0000 70 22/08/2012
0000 30 25/08/2012
0001 50 20/08/2012
0001 100 22/08/2012
0002 150 25/08/2012

Voglio ottenere:

0000 30 25/08/2012
0001 100 22/08/2012
0002 150 25/08/2012

grazie

6 Risposte

  • Re: Aiuto per una query

    Ciao e benvenuto sul forum.

    Ti scrivo di seguito come farei la query:
    
    select * from Tabella_listino, (
    select CodiceArticolo, max(data) as maxdate
    from Tabella_listino group by CodiceArticolo) Tabella_listino_last
    where Tabella_listino.CodiceArticolo = Tabella_listino_last.CodiceArticolo
    and Tabella_listino.data = maxdate
    
    In pratica la query innestata serve a limitare i risultati a quelli con data max. La query esterna invece aresttuirti il completo set di risultati.

    Fammi sapere se funziona
  • Re: Aiuto per una query

    Segno una soluzione equivalente a quella di Toki, che fa uso di Tabelle derivate per la restrizione dei dati
    
        Select T1.Provenienza,MINP.IdProdotto,MINP.Minimo
        From T1
        RIGHT JOIN
            (select IdProdotto, Min(Prezzo) as Minimo
             From T1
             Group By IdProdotto) AS MINP
        ON T1.IdProdotto=MINP.IdProdotto AND T1.Prezzo=MINP.Minimo
    Stesso metodo per estrarre il massimo:
    
        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
    Gli esempi riportati sono calzati su un esempio ed estraggono il MIN/MAX prezzo... quindi se devi riferirti al MIN/MAX data devi apportare una modifica molto semplice.
  • Re: Aiuto per una query

    Grazie a tutti e due per le soluzioni entrambi valide e funzionanti.
    Quella notte avevo trovato la soluzione, però non riuscendo a scrivere la query innestata perche non conoscevo la sintassi, quindi mi ero creato una tabella virtuale (vista), e la query principale.
    Ora grazie a voi posso scrivere le tabelle innestate.

    Ciao alla prossima
  • Re: Aiuto per una query

    ***************************


    Qualcuno può aiutarmi!!!! GRAZIE
  • Re: Aiuto per una query

    Ciao orres21 e benvenuto nel forum.
    Per richiedere aiuto devi creare un nuovo thread, quello sui hai scritto è relativo alla richiesta di giondalar77
    Inoltre nel tuo thread oltre a spiegare il problema, dovresti scrivere come hai provato a risolverlo e dove hai incontrato difficoltà
  • Re: Aiuto per una query

    Ok grazie
Devi accedere o registrarti per scrivere nel forum
6 risposte