IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Problème de requête MYSQL avec plusieurs limit


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Par défaut Problème de requête MYSQL avec plusieurs limit
    Bonjour tout le monde,

    J'ai un petit souci avec le Limit Mysql.

    J'effectue plusieurs requêtes qui me permettent d'obtenir plusieurs colonnes de résultat.

    Je fais donc une première requête pour compter le nombre de résultats. Je divise ce nombre de résultat par 4, et je crée 4 requêtes avec LIMIT qui me permette normalement de découper le résultat en 4 sous groupe.

    Voici la page sur laquelle ca ne fonctionne pas (vous pouvez voir clairement les requête dans le contenu de la page.

    Sinon pour ceux qui n'ont pas le temps de cliquer sur ce lien, voici la requete qui compte le nombre de résultats :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $compt_req = "SELECT id FROM pun_1users WHERE group_id = '1' OR group_id = '2' OR group_id = '7';";
     
    $compt_res = mysql_query($compt_req);
    $counte=mysql_num_rows($compt_res);
    Puis je découpe le nombre de résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $quart = ceil($counte / 4);
    Puis je créer mes 3 autres variable pour mes limit de requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $double_quart = ceil(2 * $quart);
    $triple_quart = ceil(3 * $quart);
    Ainsi je crée mes 4 requêtes mysql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $condition = "SELECT id, username, use_avatar, date_naissance FROM pun_1users WHERE (group_id = '1' OR group_id = '2' OR group_id = '7') ORDER BY username ASC limit";
     
    		$list_memb_req = $condition." 0, ".$quart.";";
    		$list_memb_res = mysql_query($list_memb_req);
     
    		$list_memb_req_1 = $condition." ".$quart.", ".$double_quart.";";
    		$list_memb_res_1 = mysql_query($list_memb_req_1);
     
    		$list_memb_req_2 = $condition." ".$double_quart.", ".$triple_quart.";";
    		$list_memb_res_2 = mysql_query($list_memb_req_2);
     
    		$list_memb_req_3 = $condition." ".$triple_quart.", ".$counte.";";
    		$list_memb_res_3 = mysql_query($list_memb_req_3);
    Voici les requêtes une fois éxecuté pour être le plus clair possible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id, username, use_avatar, date_naissance FROM pun_1users WHERE (group_id = '1' OR group_id = '2' OR group_id = '7') ORDER BY username ASC limit 0, 8;
    SELECT id, username, use_avatar, date_naissance FROM pun_1users WHERE (group_id = '1' OR group_id = '2' OR group_id = '7') ORDER BY username ASC limit 8, 16;
    SELECT id, username, use_avatar, date_naissance FROM pun_1users WHERE (group_id = '1' OR group_id = '2' OR group_id = '7') ORDER BY username ASC limit 16, 24;
    SELECT id, username, use_avatar, date_naissance FROM pun_1users WHERE (group_id = '1' OR group_id = '2' OR group_id = '7') ORDER BY username ASC limit 24, 29;
    Ensuite je retourne mes résultats dans mon contenu html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <div class="colonne_gauche">
     
    		<ul class="gestion">
     
    		<?php while($list_memb = mysql_fetch_assoc($list_memb_res)){ require('row.php'); } ?>
     
    		</ul>
     
    		</div>
     
    		<div class="colonne_gauche">
     
    		<ul class="gestion">
     
    		<?php while($list_memb = mysql_fetch_assoc($list_memb_res_1)){ require('row.php'); } ?>
     
    		</ul>
     
    		</div>
     
    		<div class="colonne_gauche">
     
    		<ul class="gestion">
     
    		<?php while($list_memb = mysql_fetch_assoc($list_memb_res_2)){ require('row.php'); } ?>
     
    		</ul>
     
    		</div>
     
    		<div class="colonne_droite">
     
    		<ul class="gestion">
     
    		<? while($list_memb = mysql_fetch_assoc($list_memb_res_3)){ require('row.php'); } ?>
     
    		</ul>
     
    		</div>
    Et bizarrement, les LIMIT sont soit mal interprété ou autre, mais il va me mettre 8 résultat dans ma première colonne, 16 dans la deuxième, 16 dans la troisième, et me remettre les 8 derniers résultats dans ma dernière colonne (alors qu'il y était dans ma troisième colonne).

    Cela fait quelques heures que je tourne en rond sans rien comprendre.

    Merci pour votre aide !

    Bien cordialement,

    Sylvain

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Par défaut
    En fait, la fonction LIMIT de mysql ne fonctionne pas comme j'ai fait, il faut lui indiqué en premier là où il doit reprendre les donnée, et le deuxième chiffre indique le nombre à fournir.

    Donc mes requêtes devaient être ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id, username, use_avatar, date_naissance FROM pun_1users WHERE (group_id = '1' OR group_id = '2' OR group_id = '7') ORDER BY username ASC limit 0, 8;
    SELECT id, username, use_avatar, date_naissance FROM pun_1users WHERE (group_id = '1' OR group_id = '2' OR group_id = '7') ORDER BY username ASC limit 8, 8;
    SELECT id, username, use_avatar, date_naissance FROM pun_1users WHERE (group_id = '1' OR group_id = '2' OR group_id = '7') ORDER BY username ASC limit 16, 8;
    SELECT id, username, use_avatar, date_naissance FROM pun_1users WHERE (group_id = '1' OR group_id = '2' OR group_id = '7') ORDER BY username ASC limit 24, 8;
    Merci à Redwing !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème requête sql avec plusieurs jointures
    Par CocoX02 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/02/2015, 13h33
  2. Réponses: 4
    Dernier message: 11/01/2011, 16h29
  3. Réponses: 5
    Dernier message: 10/07/2006, 12h05
  4. Problème de requête SQL avec instruction TRANSFORM
    Par Nosper dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/06/2005, 16h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo