Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
666 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [mysql] récupérer certains résultats

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[mysql] récupérer certains résultats

n°166487
siewn
Posté le 26-06-2002 à 15:47:03  profilanswer
 

j'ai ma requete qui me retourne 1600 résultats
mais j'ai uniquement besoin des résultats 1400 à 1450.
 
le seul moyen (en php) est d'abord de faire une boucle qui tourne 1400 fois dans le vide pour pouvoir ensuite récupérer les enregistrements qui conviennent ?

mood
Publicité
Posté le 26-06-2002 à 15:47:03  profilanswer
 

n°166489
siewn
Posté le 26-06-2002 à 15:47:27  profilanswer
 

bien sûr je veux (peux) pas utilser LIMIT sinon ça serait trop facile ;)

n°166495
massanu
Posté le 26-06-2002 à 15:50:08  profilanswer
 

bah tu fait un BETWEEN sur ton id
 
ou un where simple
 
genre WHERE id<1450 AND id>1400


---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
n°166498
siewn
Posté le 26-06-2002 à 15:53:10  profilanswer
 

euh, c pas ça le pb :)
 
je veux les résultats de ma requete à partir du 1400e résultat et jusqu'au 1450e résultat.

n°166499
Tentacle
Posté le 26-06-2002 à 15:54:01  profilanswer
 

Si tu veux faire ça en php, sur le site www.php.net (tilt !), j'ai trouvé la fonction mysql_field_seek qui déplace le pointeur de résultat.
Par exemple tu fais :

Code :
  1. mysql_field_seek ($result, 1400);

et la prochaine ligne que tu liras avec mysql_fetch_row sera la numéro 1400 :)
 
Voir la doc : http://www.php.net/manual/fr/ref.mysql.php

n°166501
Tentacle
Posté le 26-06-2002 à 15:54:47  profilanswer
 

siewn a écrit a écrit :

bien sûr je veux (peux) pas utilser LIMIT sinon ça serait trop facile ;)




 
d'ailleurs pourquoi tu peux (veux ?) pas utiliser LIMIT ?

n°166506
siewn
Posté le 26-06-2002 à 15:56:33  profilanswer
 

Tentacle a écrit a écrit :

Si tu veux faire ça en php, sur le site www.php.net (tilt !), j'ai trouvé la fonction mysql_field_seek qui déplace le pointeur de résultat.
Par exemple tu fais :

Code :
  1. mysql_field_seek ($result, 1400);

et la prochaine ligne que tu liras avec mysql_fetch_row sera la numéro 1400 :)
 
Voir la doc : http://www.php.net/manual/fr/ref.mysql.php




 
v voir mais d'après ce que j'ai compris c'est pas exactement ça

n°166507
siewn
Posté le 26-06-2002 à 15:58:00  profilanswer
 

Tentacle a écrit a écrit :

 
 
d'ailleurs pourquoi tu peux (veux ?) pas utiliser LIMIT ?




 
parce qu'en fait les enregistrements que je veux récupérer dépendent du nombre de résultats.
 
disons que je veux les enregistrements de nbresult-200 à nbresult-150
donc il faudrait que je fasse un première requete pour connaitre le nombre de résultat et ça serait 2x plus long

n°166509
Tentacle
Posté le 26-06-2002 à 15:58:39  profilanswer
 

siewn a écrit a écrit :

 
 
v voir mais d'après ce que j'ai compris c'est pas exactement ça




 
bah en tout cas, si après tu fais 50 fois un mysql_fetch_row, tu récupères les lignes 1400 à 1450... si c'est pas ce que tu voulais, faudra que tu reformules ta question :)


Message édité par Tentacle le 26-06-2002 à 15:59:24
n°166513
siewn
Posté le 26-06-2002 à 16:00:58  profilanswer
 

t sûr ?
je test alors


Message édité par siewn le 26-06-2002 à 16:01:14
mood
Publicité
Posté le 26-06-2002 à 16:00:58  profilanswer
 

n°166514
Tentacle
Posté le 26-06-2002 à 16:02:15  profilanswer
 

siewn a écrit a écrit :

t sûr ?
je test alors




 
bah si j'ai bien compris la définition de cette fonction ... oui ça devrait marcher

n°166520
ethernal
Chercheur de vérité...
Posté le 26-06-2002 à 16:08:08  profilanswer
 

siewn a écrit a écrit :

 
 
parce qu'en fait les enregistrements que je veux récupérer dépendent du nombre de résultats.
 
disons que je veux les enregistrements de nbresult-200 à nbresult-150
donc il faudrait que je fasse un première requete pour connaitre le nombre de résultat et ça serait 2x plus long
 




le count est optimisé, d'après ce que j'ai cru comprendre, il ne parcourt même pas tout les enregs : c'est enregistré dans les infos de la table (pour un select sans where).
 
en tout cas ça m'étonnerait que ça soit plus lent que de faire ce que tu fais actuellement ;)


---------------
...oups kernel error...
n°166524
darklord
You're welcome
Posté le 26-06-2002 à 16:09:49  profilanswer
 

SELECT  
....
WHERE ROWNUM BETWEEN 1400 AND 1450;


---------------
Just because you feel good does not make you right
n°166526
siewn
Posté le 26-06-2002 à 16:11:12  profilanswer
 

ethernal a écrit a écrit :

 
le count est optimisé, d'après ce que j'ai cru comprendre, il ne parcourt même pas tout les enregs : c'est enregistré dans les infos de la table (pour un select sans where).
 
en tout cas ça m'étonnerait que ça soit plus lent que de faire ce que tu fais actuellement ;)




 
en sql server c'était largement le cas en tout cas

n°166530
Tentacle
Posté le 26-06-2002 à 16:11:59  profilanswer
 

ethernal a écrit a écrit :

 
le count est optimisé, d'après ce que j'ai cru comprendre, il ne parcourt même pas tout les enregs : c'est enregistré dans les infos de la table (pour un select sans where).
 
en tout cas ça m'étonnerait que ça soit plus lent que de faire ce que tu fais actuellement ;)




 
en fait je pense que ça dépend effectivement de la complexité de la requête... si il y a des where c'est par certain que de faire le count soit plus rapide.
 
Par contre c'est sûr que si il fait une boucle de 1400 itérations pour récupérer les 50 lignes d'après, ça risque d'être très lent. L'avantage de mysql_field_seek c'est que cette boucle est faite par mysql et qu'il ne renvoie pas le résultat à chaque fois :)

n°166532
Tentacle
Posté le 26-06-2002 à 16:14:07  profilanswer
 

DarkLord a écrit a écrit :

SELECT  
....
WHERE ROWNUM BETWEEN 1400 AND 1450;




 
nonon il veut commencer à un numéro de ligne qui dépend du nombre total de ligne !

n°166539
siewn
Posté le 26-06-2002 à 16:19:49  profilanswer
 

c bien ce que j'avais compris, mysql_field_seek sert pas à ça :-(
 
en fait je crois que ça permet plus de se déplacer entre les champs d'un résultat mais pas entre les résultats

n°166542
darklord
You're welcome
Posté le 26-06-2002 à 16:24:17  profilanswer
 

Tentacle a écrit a écrit :

 
 
nonon il veut commencer à un numéro de ligne qui dépend du nombre total de ligne !




 
ah désolé autant pour moi ;)


---------------
Just because you feel good does not make you right
n°166569
ethernal
Chercheur de vérité...
Posté le 26-06-2002 à 16:39:32  profilanswer
 

essaye avec mysql_data_seek alors : http://www.php.net/manual/fr/funct [...] a-seek.php
 
 
int mysql_data_seek ( resource result_identifier, int row_number)

Citation :


 
mysql_data_seek() retourne TRUE en cas de succès et FALSE sinon.  
 
mysql_data_seek() déplace le pointeur interne de résultat, dans le résultat associé à l'identifiant de résultat result_identifier. Il le fait pointer à la ligne row_number. Le prochain appel à mysql_fetch_row() retournera cette ligne.  
 
row_number commence à 0.


 
tu étais pas loin Tentacle  :jap:


Message édité par ethernal le 26-06-2002 à 16:40:37

---------------
...oups kernel error...
n°166575
siewn
Posté le 26-06-2002 à 16:42:01  profilanswer
 

merci c'est nickel cette fois :-))

n°166717
Tentacle
Posté le 26-06-2002 à 20:56:53  profilanswer
 

ethernal a écrit a écrit :

tu étais pas loin Tentacle  :jap:  




 
Argh je suis passé à côté :)
 
bravo  :jap:

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [mysql] récupérer certains résultats

 

Sujets relatifs
[mysql] tri assez spécial[SQL] MySQL ne sait pas calculer ?
Recuperer l'ID[PHP] Récupérer les valeur d'un array dans des variables?
MySQL / OracleBonjour tt le monde !!! J'ai une erreur en PHP mysql ....
Récupérer des signets ????Mysql et phpmyadmin
Requete Mysql : filtrer par date ?[php/Mysql] connection base de donnée
Plus de sujets relatifs à : [mysql] récupérer certains résultats


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR