Newsgroup: it.comp.lang.visual-basic
Titolo: [OT] help con query sql

Salve a tutti,
scusate l'ot, ma devo realizzare una query che mi semplicherebbe non poco la 
vita all'interno di un progetto vb6...
ho una tabella:
numord        codice        val
123             aaa             bianco
123             bbb            rosso
124            aaa             bianco
124            aaa            bianco
125            aaa            rosso
125            ccc            <null>
126            aaa            bianco
126            ddd            <null>
127            aaa            verde
devo ottenere questo risultato
123            aaa        bianco
123            bbb        rosso
124            aaa        bianco
124            aaa        bianco
126            aaa        bianco
126            ddd        <null>
125            aaa        rosso
125            ccc        <null>
127            aaa        verde
Allora... faccio una prima query select distinct numord, val from <tabella> 
where codice= "aaa" order by val per ottenere gli ordini ordinati per val... 
ora pero' come faccio ad incastrare questa query per ottenere tutte le righe 
degli ordini ordinate per quella query? Tipo:
select * from <tabella> ordinate per (select distinct numord, val from 
<tabella> where codice= "aaa" order by val )
l'ordinate per come si traduce in sql? :P
Grazie 1000
A. 

Non l'ho capita...
Nicola



Non ho capito che ordinamento devi fare, devi ordinare per "primo" colore e
poi var vedere il resto dei numord?

Scriveva Andromeda giovedì, 08/07/2010:

Riprova in italiano.
Alberto

"Andrea [Work]" <andrea.isw...@gmail.invalid> ha scritto nel 
messaggio news:f3i239ld3spk$.1o3mev9rq4h4p.dlg@40tude.net...

Effettivamente io c'ho impiegato 1 giorno per capire come dovevo ordinare... 
devo ordinare tutti gli ordini per val (valore)... quindi prima tutti gli 
ordini che hanno il codice aaa = bianco, poi tutti quelli che hanno il 
codice aaa=rosso etc etc.
Spero di essere stato piu' chiaro :-)
Grazie a tutti
A. 

Dopo dura riflessione, Andromeda ha scritto :

Chiaro no.
Soprattutto perchè sembra una forma testata-righe con testata 
ridondante nelle righe, e si è un po' riluttanti a immaginare che 
esista una forma del genere.
Proviamo a riformulare in italiano: "vorrei ordinare gli ordini in base 
al VAL della riga col minor Val, e poi tutte le righe seconda tale Val 
e poi un altro campo, ad esempio codice".
Se è così, ragioniamo.
Alberto

 ha scritto nel messaggio 
news:i14nb9$ata$1...@tdi.cu.mi.it...

No,riprovo a scriverlo meglio:
"Vorrei ordinare gli ordini in base al valore crescente di VAL con 
CODICE="aaa" " attenzione pero' che l'ordine avrà altri record con altri 
codici che dovranno essere trascinati dietro...
P.S.: se guardi l'esempio sotto, vedi che prima vengono elencati tutti gli 
ordini con CODICE="aaa" e VAL="bianco", poi quelli con CODICE="aaa" e 
VAL="rosso" etc
123            aaa        bianco    <<<<<<<<<<<<<<<<<<
123            bbb        rosso
124            aaa        bianco    <<<<<<<<<<<<<<<<<<
124            aaa        bianco
126            aaa        bianco    <<<<<<<<<<<<<<<<<<
126            ddd        <null>
125            aaa        rosso    <<<<QUI CAMBIA VAL<<<<
125            ccc        <null>
127            aaa        verde    <<<<QUI CAMBIA DI NUOVO VAL<<<<<<<
Grazie,
A. 

Andromeda ha pensato forte :

Ci rinuncio.
Credevo di aver capito, ciò che hai scritto è identico a ciò che ho 
detto io, l'esempio quadra con la mia interpretazione, ma inizi il post 
con "No".
Quindi evidentemente non ci arrivo.
E dire che mi sembrava tanto facile...
Comunque, a me sarebbe venuta (ma è come avevo capito io, lo scrivo 
tanto per sfizio):
SELECT A.*
FROM TABELLA AS A
INNER JOIN
(
SELECT ORDINE, MIN(VAL) AS VAL
FROM TABELLA
WHERE CODICE = 'aaa'
GROUP BY ORDINE
) AS B
ON A.ORDINE = B.ORDINE
ORDER BY
COALESCE (B.VAL, 'ZZZZZZZZZZZ')
, A.CODICE
Alberto


Alberto, intanto ne approfitto per ringraziarti... magari sono io che ho 
capito male... infatti volevo provare il risultato del tuo sql ma mi dà 
errore access... il COALESCE non je piace (funzione COALESCE non definita 
nell'espressione )        :(
A. 

 nell'espressione )        :(
magari con google avresti visto isnull...
Alberto

 
l'ordinamento non e' un problema, si fa facilemnte; e' che descrivi una 
esigenza e mostri un elenco che non corrisponde con l'esigenza che 
descrivi...
vuoi gli ordini con codice 'aaa'?
se si, perche' ci sono anche righe con 'bbb' e 'ccc'?
io un dubbio ce l'ho, ma...
che relazione lega tra loro 'aaa', 'bbb' e 'ccc'?
-- 
Paolo opg
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

 A. 
Allora, questa mi sembra una supercazzola con scappellamento a destra.
L'ordinamento che proponi non sta nè in cielo nè in terra, perchè se
applichi l'Order By sulla prima colonna avrai 123, 123, 124, 124, 125,
125 ecc... e quindi non è quello che vuoi
Se lo applichi sulla seconda colonna avrai: aaa, aaa, aaa, aaa, aaa
ecc... e non è quello che vuoi
Tanto peggio applicarlo sulla terza colonna: null, null, bianco, bianco,
bianco, ecc...
Ora spiegaci in modo chiaro e dettagliato cosa vuoi fare, a cosa ti
serve e perchè.
Magari una soluzione la troviamo.
Altrimenti non possiamo aiutarti.
Nicola

 ha scritto nel messaggio 
news:Xns9DAFB888178CEsp...@193.43.96.1...

spe ti spiego meglio, io voglio tutti gli ordini, sia con codice aaa che con 
codice bbb, ccc etc
solamente che l'ordinamento, ovvero se estrarre prima il coce 123 o il 127 o 
chi per lui, è dato dal campo VAL del codice aaa
A.


Scriveva Andromeda giovedì, 08/07/2010:

Allora la mia query è perfetta.
Alberto