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