PDA

Visualizza la versione completa : [sql] clausola 'in' e ordinamento


zaion
06-08-2003, 12:31
uso un database oracle.
con questa query seleziono una colonna e la ordino in base ad un campo


select id from (select id, pluto from tab2 where num = 1 order by ordinamento)


adesso voglio eseguire una altra query in base al risultato della query precedente.
funziona tutto perfettamente a parte il fatto che l'ordinamento non
viene più rispettato.


select * from tab1 where id in
(select id from (select id, from tab2 where num = 1 order by ordinamento))



ovvero. la prima query da una lista di id in un ordine ben preciso,
mentre la seconda query, che si basa sulla prima, mi ritorna una
serie di record in un ordine completamente casuale.
è possibile fare in modo che l'ordinamento venga rispettato anche dopo
la clausola 'in'

..è maledettamente importante. :cry:

comas17
06-08-2003, 13:41
....scusa la banalità ma...hai provato con un ulteriore "order by" ?
qualcosa del tipo:

select * from tab1 where id in
(select id from (select id, from tab2 where num = 1 order by ordinamento)) order by nome_campo

zaion
06-08-2003, 14:39
Originariamente inviato da comas17
....scusa la banalità ma...hai provato con un ulteriore "order by" ?
qualcosa del tipo:

select * from tab1 where id in
(select id from (select id, from tab2 where num = 1 order by ordinamento)) order by nome_campo

order by su cosa?!?
il campo su cui fare l'ordinamento è sulla tabella2 e non sulla tabella1
cmq sono riuscito a risolvere il problema con un altro metodo. :gren:
alla prossima :ciauz:

giorgino
06-08-2003, 17:12
select * from tab1 where id in
(select id from (select id, from tab2 where num = 1 order by ordinamento))

allora...io farei così:

select tab1.* from tab1 inner join tab2 on tab1.id=tab2.id

(così ti visualizza solo i record di tab1 che hanno l'id in un record di tab2)

where tab2.num=1 order by ordinamento

OK??

Ciao

Giorgino




:ciauz:

Loading