[MySQL] Select qui ne sélectionne que la moitié d'une table,

Select qui ne sélectionne que la moitié d'une table, [MySQL] - PHP - Programmation

Marsh Posté le 11-07-2003 à 23:58:22    

j'ai fait une recherche mais pas trouvé  :sweat:  
 
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 :jap:

Reply

Marsh Posté le 11-07-2003 à 23:58:22   

Reply

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 #.  
mysql> SELECT * FROM table LIMIT 5,10;  # Retrieve rows 6-15
To retrieve all rows from a certain offset up to the end of the result set, you can use -1 for the second parameter:  
mysql> SELECT * FROM table LIMIT 95,-1; # Retrieve rows 96-last.
If one argument is given, it indicates the maximum number of rows to return:  
mysql> SELECT * FROM table LIMIT 5;     # Retrieve first 5 rows
In other words, LIMIT n is equivalent to LIMIT 0,n.

Reply

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 ?
 
@+

Reply

Marsh Posté le 12-07-2003 à 00:31:00    

Bah tu fait un SELECT COUNT(*) puis un ensuite un SELECT .. LIMIT x,x

Reply

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 ?  :sweat: dsl j'abuse, merci bcp pour ton aide :jap:

Reply

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 !

Reply

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.
$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 !


 
merci beaucoup pour ta réponse bien complète ! :jap: je m'y mets... @+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed