Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di zaion
    Registrato dal
    Mar 2002
    Messaggi
    258

    [sql] clausola 'in' e ordinamento

    uso un database oracle.
    con questa query seleziono una colonna e la ordino in base ad un campo
    codice:
    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.
    codice:
    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.
    bye bye

  2. #2
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,523
    ....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

  3. #3
    Utente di HTML.it L'avatar di zaion
    Registrato dal
    Mar 2002
    Messaggi
    258
    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
    bye bye

  4. #4

    io la imposterei totalmente in una maniera diversa

    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





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.