Vous n'êtes pas identifié(e).
Bonjour,
Soit une table t à deux colonnes id et num.
num est une valeur qui peut être sur plusieurs lignes.
SELECT id FROM t WHERE num IN ( SELECT num FROM t WHERE :a < num AND num <= :b GROUP BY num LIMIT :x );
Comment améliorer cette requête (en supprimant la requête secondaire) ?
Merci.
Dernière modification par moijhd (18-11-2013 14:08:55)
Hors ligne
Saluton,
Je dirais tout bêtement :
SELECT id FROM t WHERE num BETWEEN :a +1 AND :b ;
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Ah je me suis piégé moi-même, je n'ai pas de borne à droite (donc pas de :b) et dans ta requête il va y avoir tous les résultats (alors que je veux pouvoir n'en prendre qu'un certain nombre).
Je corrige mon problème et ma requête :
SELECT id FROM t WHERE num IN ( SELECT num FROM t WHERE :a < num GROUP BY num ORDER BY num ASC LIMIT :x );
Si ma table ressemble à
1 | 1
2 | 1
3 | 2
4 | 3
5 | 3
6 | 3
7 | 4
8 | 4
et que je bind a = 0 et x = 3 je veux récupérer les enregistrements d'id entre 1 et 6 (inclus).
Dernière modification par moijhd (19-11-2013 06:42:17)
Hors ligne
Bonjour,
Désolé moijhd mais c'est MK qui t'a donné la solution, car ton LIMIT s'applique au nombre de lignes et non à la valeur de la borne supérieure.
++
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne