Tabella:
Attraverso questa query:codice:Id Articolo Flag Prezzo 1 aaa 0 32 2 bbb 0 22 3 ccc 1 54 4 ddd 0 8 5 eee 0 77 6 fff 1 11 7 ggg 1 25 8 hhh 0 87
estraggo dapprima gli articoli con flag 1 (devono infatti stare sempre in testa al recordset) poi tutti quelli che seguono ordinandoli per prezzo. Fin qui nessun problema. Il problema arriva quando mi si rende necessario l'utilizzo della LIMIT per la paginazione.codice:SELECT * FROM Tabella ORDER BY FLAG DESC, PREZZO ASC
Infatti la limit NON DEVE considerare i record con flag 1 ma solamente i successivi. Ecco che con una limit di due dovrebbe restituirmi i primi tre con flag 1 e poi, grazie alla limit restituirmene due con flag 0. Invece mi restituisce i primi due record con flag 1...
Esiste un modo per risolvere senza dover ricorrere a due query separate unite da un union all? ovviamente niente soluzioni del tipo "fai una limit 2+3 perchè il numero di record con flag 1 non è mai noto a priori...
Grazie.

Rispondi quotando


