Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    170

    [mysql]Query Mysql non rispetta WHERE

    Salve a tutti.
    Avevo già postato qualcosa prima ma è finito in terza pagina senza nessuna soluzione.
    Visto che comunque il problema adesso è un altro e molto più grave,ed oltre tutto ho fatto modifiche alla query, riposto il problema di prima più quello nuovo.

    Ho fatto una query di due select con vari join e where con una union.

    codice:
    (
    SELECT * 
    FROM anagra****
    RIGHT JOIN utenti ON utenti.id_ana = anagra****.ID
    RIGHT JOIN ordini ON utenti.id_ana = ordini.id_ana
    RIGHT JOIN ctordine ON ctordine.id_ordine = ordini.ID
    LEFT JOIN citta ON citta.ID = anagra****.id_citta
    LEFT JOIN quartieri ON quartieri.ID = anagra****.id_quartiere
    LEFT JOIN categorie ON categorie.ID = anagra****.id_cat
    WHERE ragione LIKE '%Valerio%'
    AND ordini.flag =1
    AND ctordine.flagtl =1
    AND ctordine.topl > CURDATE( ) 
    AND anagra****.id_citta = ( 
    SELECT ID
    FROM citta
    WHERE nomeci = 'Roma' ) 
    AND via LIKE '%via PioX%'
    ORDER BY anagra****.ragione ASC 
    )
    UNION (
    
    SELECT * 
    FROM anagra****
    RIGHT JOIN utenti ON utenti.id_ana = anagra****.ID
    RIGHT JOIN ordini ON utenti.id_ana = ordini.id_ana
    RIGHT JOIN ctordine ON ctordine.id_ordine = ordini.ID
    LEFT JOIN citta ON citta.ID = anagra****.id_citta
    LEFT JOIN quartieri ON quartieri.ID = anagra****.id_quartiere
    LEFT JOIN categorie ON categorie.ID = anagra****.id_cat
    WHERE ragione LIKE '%Valerio%'
    AND ordini.flag =1
    AND ISNULL(
    ctordine.topl
    )
    OR ctordine.topl < CURDATE( ) 
    AND anagra****.id_citta = ( 
    SELECT ID
    FROM citta
    WHERE nomeci = 'Roma' ) 
    AND via LIKE '%via PioX%'
    AND ragione LIKE '%Valerio%'
    ORDER BY anagra****.ragione ASC 
    )
    LIMIT 0 , 10

    Ok. La query viene eseguita senza problemi.
    Però ci sono due problemi

    1) Non segue l'ordinamento che ho imposto con ORDER BY anagra****.ragione
    2) Se ne sbatte dei WHERE SUCCESSIVI, cioè se la ragione è true e la categoria false lui mi da il risultato!

    Bhu ragazzi io sto uscendo pazzo se qualcuno mi aiuta gli faccio una statua

    P.S. hahah c'è il masking per la parola **** "F I C A" hihi cmq anagra**** = anagraf'ica

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    170
    Bhe non so perchè ma aggiungendo 2 parentesi tonde adesso funziona tutto tranne l'ordinamento bhuuuuuuuu!

    In realtà sembrerebbe!!Devo ancora contollare molti altri casi.

    (
    ordini.flag =1
    AND ctordine.flagtl =1
    AND ctordine.topl > CURDATE( )
    )

    così adesso funziona bhu!?!?!
    Avete spiegazioni per questo e Soluzioni per l'ordinamento????
    Grazie a tutti ciaoo!

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    170
    Perfetto tutto risolto.
    Do la soluzione magari potrebbe servire a qualcuno in futuro.
    Quando si fa la Union di due select gli ordini delle singole select non viene considerato.
    Non si sa xchè infatti è un bug che ho scoperto spulciando il dev del mysql. L'unica soluzione è dare un alias alle due tabelle e tutto funziona.

    Grazie comunque a tutti ciao!

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.