Problema in sql..

giovedì 27 agosto 2009 - 11.36

symonx80 Profilo | Junior Member

Ciao,
mi trovo a dover ricavare dei dati da due tabelle ma ho problemi nella formulazione della query..
Ho due tabelle

UTENTI(CF,COGNOME)
ORDINI(CODICE,CF,DATA,INDIRIZZO_SPEDIZIONE)

e devo ricavare per ogni utente l'indirizzo di spedizione.
Il problema è che, nel caso di ordini multipli per utente, io devo ricavare l'indirizzo di spedizione relativo all'ordine con data più recente.
Sto provando e ripovando ma non riesco a trovare la giusta soluzione..se qualcuno ha un consiglio,un'idea, una giusta strada...
grazie

alx_81 Profilo | Guru

>Ciao,
ciao

>Sto provando e ripovando ma non riesco a trovare la giusta soluzione..se
>qualcuno ha un consiglio,un'idea, una giusta strada...
che DBMS utilizzi?

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

symonx80 Profilo | Junior Member

sql server 2005,
ho pensato a questa query, potrebbe essere corretta?


select * from utenti ute inner join ordini ord1 on ute.cf = ord1.cf where ord1.data = ( select max(ord2.data) from ordini ord2 where ord1.cf = ord2.cf)

alx_81 Profilo | Guru

>sql server 2005,
>ho pensato a questa query, potrebbe essere corretta?
ma che campi ti servono? Fammi un esempio di record che vuoi ottenere..
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

symonx80 Profilo | Junior Member

Supponiamo che con un join semplice ottenga per l'utente con CF = 1 i seguenti record

CF COGNOME INDIRIZZO_SPEDIZIONE DATA ORDINE 1 ROSSO VIA GATTO 1989 3 1 ROSSO VIA CANE 2001 5 1 ROSSO VIA GATTO 1976 2

io vorrei ottenere solo il record relativo alla data =2001
e quindi

CF COGNOME INDIRIZZO_SPEDIZIONE DATA ORDINE 1 ROSSO VIA CANE 2001 5

naturalmente per ogni utente della tabella UTENTI.
Spero di essere stato chiaro.

alx_81 Profilo | Guru

>Supponiamo che con un join semplice ottenga per l'utente con
>CF = 1 i seguenti record
>
>CF COGNOME INDIRIZZO_SPEDIZIONE DATA ORDINE
>1 ROSSO VIA GATTO 1989
>3
>1 ROSSO VIA CANE 2001
>5
>1 ROSSO VIA GATTO 1976
>2
>
>io vorrei ottenere solo il record relativo alla data =2001
>e quindi
>
>CF COGNOME INDIRIZZO_SPEDIZIONE DATA ORDINE
>1 ROSSO VIA CANE 2001
>5
>
>naturalmente per ogni utente della tabella UTENTI.
>Spero di essere stato chiaro.
Allora la query che hai fatto tu, ricava l'ordine più recente, legandosi all'utente per codice fiscale. Se è veramente quello che ti serve è ok.
Ma è corretto che perdi gli altri ordini? oppure sono i dettagli dell'ordine?
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

symonx80 Profilo | Junior Member

A me interessa ricavare l'indirizzo di spedizione per l'utente ma siccome ho diversi indirizzi di spedizione, probabilmente per un'errata costruzione del db, devo trovare quello con data ordine maggiore.
Grazie!

alx_81 Profilo | Guru

quindi la tua query dovrebbe essere corretta.
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5