Originariamente inviato da ade_v
leggi sopra
si e no, il problema è che in base all'IF mi dovrebbe cambiare anche l'ordinamento.
@piero: si, hai ragione, ho sbagliato io a scrivere il primo esempio, come dici te funzione ma nel caso che $x = 1001 non mi restituisce nessun valore, e devo quindi fare la seconda query per rpendere il valore di qnt più alto.

cerco di spiegarmi meglio:
Codice PHP:
id qnt
10
100
1000 
avrò i risultati:

Codice PHP:
SELECT qnt FROM tabella WHERE qnt >= '$x' ORDER BY qnt ASC LIMIT 1
$x 
9//risultato 10, ok;
$x 10//risultato 10, ok;
$x 11//risultato 100, ok;
$x 1001//nessun risultato, necessaria seconda query

SELECT qnt FROM tabella WHERE IF(qnt <= '$x'qntqnt='$x'ORDER BY qnt DESC LIMIT 1
$x 
9//nessun risultato
$x 10//risultato 10, ok;
$x 11//risultato 10, errore!;
$x 1001//risultato 1000, ok; 
mentre i risultati che dovrei ottenere sono

Codice PHP:
$x 9//risultato 10
$x 10//risultato 10
$x 11//risultato 100
$x 1001//risultato 1000 
ho provato con

Codice PHP:
SELECT qnt
FROM tabella
WHERE 
IF(
    
'$x' <= qnt,
    ( 
SELECT qnt FROM tabella WHERE '$x' <= qnt ORDER BY qnt DESC LIMIT 1 ),
    ( 
SELECT qnt FROM tabella WHERE '$x' qnt ORDER BY qnt ASC LIMIT 1 )
)
LIMIT 1 
ma niente, mi restituisce sempre 10