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
1 | 10
2 | 100
3 | 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', qnt, qnt='$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