Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    80

    Unire i risultati di due query

    Salve a tutti!
    Volevo chiedervi se c'è un modo (e sarà stupidissimo) ma io ancora non l'ho scoperto, per unire i risultati di 2 query e visualizzarli con un unico mysql_fetch_row.
    Quando parlo di unire due risultati di 2 query intendo dire mantenere l'ordine delle due query

    ESEMPIO:
    Supponiamo che abbia 1 Tabella così composta
    ID - NOME - DESCRIZIONE - VALUTAZIONE

    SELECT * FROM Tabella WHERE `nome` = 'pippo' ORDER BY `valutazione`

    con

    SELECT * FROM Tabella WHERE `nome` = 'ciccio' ORDER BY `valutazione`

    se facessi un unica query perderei l'ordine poichè ordinando per valutazione i pippo e i ciccio si mescolano.

    Supponendo che mi serva obbligatoriamente un solo mysql_fetch_row perchè eseguo delle operazioni su di essi, come posso fare ad ottenere i risultati in quest'ordine prima i pippo per valutazione e poi i ciccio per valutazione?

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Per unire due query c'è la UNION, ma nel tuo caso non serve.

    Per farla semplice puoi fare così
    codice:
    SELECT *FROM Tabella WHERE `nome` in ('pippo',  'ciccio') ORDER BY nome desc, `valutazione`
    Così ottieni prima tutti i pippo e poi tutti i ciccio.
    Se non sai prima quali sono i nomi, o se devi farlo con più di due valori, si complica un po'. Ma ci si riesce lo stesso

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    80
    Cavolo ho sbagliato l'esempio,
    in realtà il where è di due campi diversi

    SELECT * FROM Tabella WHERE `nome` = 'pippo' ORDER BY `valutazione`

    con

    SELECT * FROM Tabella WHERE `descrizione` = 'ciccio' ORDER BY `valutazione`

    dunque suppongo che il tutto si complichi

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    80
    Ho provato una Union in questo modo:

    SELECT *
    FROM Tabella
    WHERE `nome` = 'pippo'
    UNION
    SELECT *
    FROM Tabella
    WHERE `descrizione` = 'ciccio'
    ORDER BY `valutazione`

    ma con union si può mettere l'ordine solo alla fine (altrimenti mi da errore) dunque perdo cmq l'ordine (cioè prima i risultati con nome pippo ordinati per valutazione e poi i risultati con descrizioni ciccio ordinati per valutazione)

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da Ladyweb
    Cavolo ho sbagliato l'esempio,
    in realtà il where è di due campi diversi

    SELECT * FROM Tabella WHERE `nome` = 'pippo' ORDER BY `valutazione`

    con

    SELECT * FROM Tabella WHERE `descrizione` = 'ciccio' ORDER BY `valutazione`

    dunque suppongo che il tutto si complichi

    select * from tabella where nome = 'pippo' and descrizione = 'ciccio' order by valutazione

    select * from tabella where nome = 'pippo' or descrizione = 'ciccio' order by valutazione

    Nel primo caso con l'and entrambe le condizioni devono essere vere, con l'or invece basta che lo sia una.

  6. #6
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    select *, if(nome='pippo',0,1) as ordine from tabella where nome = 'pippo' or descrizione = 'ciccio' order by ordine, valutazione

    (se per caso nella tabella c'è già un campo che si chiama ordine cambia nome a quello che ho aggiunto io)

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    80
    WOW Funziona, ora però voglio capire una cosa, con if(nome='pippo',0,1) as ordine crei un nuovo campo su cui ordinare, ma vediamo se riesco a decifrare se il nome è uguale a pippo pongo il campo a 0 altrimentia 1 e alla fine sono distinti.
    Vero?

  8. #8
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da Ladyweb
    Vero?
    Giusto

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