Select qui ne sélectionne que la moitié d'une table, [MySQL] - PHP - Programmation
Marsh Posté le 12-07-2003 à 00:00:25
Citation : The LIMIT clause can be used to constrain the number of rows returned by the SELECT statement. LIMIT takes one or two numeric arguments. The arguments must be integer constants. If two arguments are given, the first specifies the offset of the first row to return, the second specifies the maximum number of rows to return. The offset of the initial row is 0 (not 1): To be compatible with PostgreSQL MySQL also supports the syntax: LIMIT # OFFSET #. |
Marsh Posté le 12-07-2003 à 00:30:02
syl --> merci pour ton post mais je n'y trouve pas ma réponse, je veux chopper la moitié de ma table, sachant que celle ci peut varier en quantité, donc je ne sais jusqu'ou prendre pour en sélectionnez la moitié,
en clair peut on systématiquement avoir la moitié, quelque soit le nombre d'entrées dans la base ?
@+
Marsh Posté le 12-07-2003 à 00:31:00
Bah tu fait un SELECT COUNT(*) puis un ensuite un SELECT .. LIMIT x,x
Marsh Posté le 12-07-2003 à 00:44:54
*Syl* a écrit : Bah tu fait un SELECT COUNT(*) puis un ensuite un SELECT .. LIMIT x,x |
donc dans ce cas je vais chopper le nombre d'entrées, divisé par 2 le total et adapté les SELECT en conséquences,
mais imaginons que le nombre d'entrées soit impaires, comment je fait pour retomber sur mes pieds ? dsl j'abuse, merci bcp pour ton aide
Marsh Posté le 12-07-2003 à 01:06:17
Moi je ferais une première requête qui compte le nombre d'entrées dans ta table.
$nombre_entree == le nombre d'entrées de ta table
Ensuite tu fait une requête avec :
limit ceil($nombre_entree)
//ceil est une fonction qui arrondi à l'entier supèrieur(UNIQUEMENT si $nombre_entree est un décimal)
//Avec cette requête tu aura tout les enregistrements de 0 à ceil($nombre_entree)
Puis tu fait une autre requête avec :
limit ceil($nombre_entree),-1
//Avec cette autre requête tu aura tout les enregistrements de ceil($nombre_entree)+1 jusqu'au dernier.
Celà donnerait :
$sql="SELECT * FROM table";
$result=mysql_query($sql);
$nombre_entree=mysql_num_rows($result);
//Requête pour avoir la première partie de la table
$sql="SELECT * FROM table LIMIT ".ceil($nombre_entree);
$result=mysql_query($sql);
//Requête pour avoir la deuxième partie de la table
$sql="SELECT * FROM table LIMIT ".ceil($nombre_entree).",-1;
$result=mysql_query($sql);
Voilà, bonne soirée !
Marsh Posté le 12-07-2003 à 10:59:32
Wallman a écrit : Moi je ferais une première requête qui compte le nombre d'entrées dans ta table. |
merci beaucoup pour ta réponse bien complète ! je m'y mets... @+
Marsh Posté le 11-07-2003 à 23:58:22
j'ai fait une recherche mais pas trouvé
est-ce que l'on peut faire un select qui ne prenne que la première moitié d'une table,
puis un select qui prenne la deuxième moitié,
Merci pour vos réponses