Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 20 su 20
  1. #11
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    78
    Originariamente inviato da optime
    ringraziare la simpatia di access...

    codice:
    " SELECT (ID + 0) AS myID, * " & _
    " FROM Sottoprodotti" &_
    " WHERE ID <= 104 " &_
    " ORDER BY 1 " &_
    " UNION ALL" &_
    " SELECT (1000000 - ID) AS myID, * " & _
    " FROM Sottoprodotti" &_
    " WHERE ID > 104 " &_
    " ORDER BY 1 "
    grazie 1000. Perlomeno adesso funziona, ma non ancora come voglio...

    Adesso ordina i risultati in questo modo

    1
    2
    3
    [...]
    104
    110
    109
    108
    107
    106
    105

    Io invece vorrei fossero ordinati così

    110
    109
    108
    107
    106
    105
    1
    2
    3
    [...]
    104

    non odiatemi!

  2. #12
    inverti l'ordine delle due select

  3. #13
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    78
    Già fatto. Ma non cambia...

    codice:
    strSQL3 = " SELECT (1000000 - ID) AS myID, * " & _
    " FROM Sottoprodotti" &_
    " WHERE ID > 104 " &_
    " ORDER BY 1 " &_
    " UNION ALL" &_
    " SELECT (ID + 0) AS myID, * " & _
    " FROM Sottoprodotti" &_
    " WHERE ID <= 104 " &_
    " ORDER BY 1 "

  4. #14
    aggiustiamo quella di spintux

    codice:
    " SELECT * FROM (SELECT * FROM Sottoprodotti WHERE ID > 104 ORDER BY ID DESC) " &_
    " UNION ALL " &_
    " SELECT * FROM (SELECT * FROM Sottoprodotti WHERE ID <= 104 ORDER BY ID ASC)"

  5. #15
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    78
    Originariamente inviato da optime
    aggiustiamo quella di spintux

    codice:
    " SELECT * FROM (SELECT * FROM Sottoprodotti WHERE ID > 104 ORDER BY ID DESC) " &_
    " UNION ALL " &_
    " SELECT * FROM (SELECT * FROM Sottoprodotti WHERE ID <= 104 ORDER BY ID ASC)"
    ci avevo già provato...

    gira correttamente ma non mi ordina i primi in modo decrescente!

    Risulta una cosa del tipo

    105
    106
    107
    108
    [...]
    1
    2
    3
    4
    5
    [...]
    104

  6. #16
    Originariamente inviato da abibon
    ci avevo già provato...

    gira correttamente ma non mi ordina i primi in modo decrescente!

    Risulta una cosa del tipo

    105
    106
    107
    108
    [...]
    1
    2
    3
    4
    5
    [...]
    104
    Cioa , prova così
    (l'errore sul numero dei campi era probabilmente dovuto all'* che ora
    ho qualificato meglio con sottoprogetti.* ) :

    codice:
    --soluzione 1 rivista
    select  1 as ord1, (-1*id ) as ord2 ,  sottoprogetti.*
    from sottoprogetti where id>104  
    Union all
    select  2 as ord1, id  as ord2 ,  sottoprogetti.*
    from tord where id<=2  
    order by ord1, ord2

  7. #17
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    78
    FUNZIONAAAAAAA

    Mitico!!!! Grazie mille a tutti...

    Buona serata e buon Natale

  8. #18
    Originariamente inviato da abibon
    FUNZIONAAAAAAA

    Mitico!!!! Grazie mille a tutti...

    Buona serata e buon Natale
    ....anche a te ed a tutto il forum

    P.S. credo che si possa anche togliere il campo ord1 che non serve a nulla
    se gli ID sono tutti >0; cioè:

    codice:
    select  (-1*id ) as ord2 ,  sottoprogetti.*
    from sottoprogetti where id>104  
    Union all
    select  id  as ord2 ,  sottoprogetti.*
    from sottoprogetti where id<=104  
    order by ord2

  9. #19
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    scusate ragazzi , ma potete spiegarmi una cosina...

    a quanto so le union devono avere gli stessi campi per coordinarsi



    ma perchè usare un indice di questo tipo ? (-1*id )

    gracias...

  10. #20
    Originariamente inviato da agenti
    scusate ragazzi , ma potete spiegarmi una cosina...

    a quanto so le union devono avere gli stessi campi per coordinarsi



    ma perchè usare un indice di questo tipo ? (-1*id )

    gracias...
    Ciao,
    perchè - di regola - nelle union l'order by non può essere specificato a
    livello di singola select
    (a meno di usare 'trucchi' tipo select * from ( select top 99.99999..) )

    ma va specificato per ultimo e vale per 'tutta' la query union.

    In Sql server scrivere una cosa tipo

    Select ID from tab where id>104 order by ID desc
    Union all
    Select ID from tab where id<=104 order by ID asc

    provoca un errore di sintassi, mentre pare che in access la prima order by sia ignorata.

    ....forse con altri dbms si può fare ma che io sappia non rientra nello standard sql.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.