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 :

Requête avec LIMIT, comment la modifier ?


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Femme Profil pro
    Presque retraitée
    Inscrit en
    Septembre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Presque retraitée
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2008
    Messages : 75
    Points : 66
    Points
    66
    Par défaut Requête avec LIMIT, comment la modifier ?
    Bonjour,

    J'utilise une requête pour récupérer diverses données de deux tables dont celles concernant les produits d'un fournisseur parmi tous les produits de ma base et je me sers de LIMIT pour "limiter" l'affichage à 60 produits.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT sbbproduit.id, sbbproduit.hid, sbbproduit.sid, sbbproduit.libelle, sbbproduit.photoarticle, sbbproduit.frsid, sbbref.ref, sbbref.libelle, sbbref.societe FROM sbbproduit, sbbref WHERE sbbproduit.libelle = sbbref.libelle AND sbbproduit.frsid='$id' LIMIT 0,60"
    Cependant, j'aurais besoin de pouvoir modifier la limite, actuellement à 60, du nombre de produits pour certains fournisseurs seulement. Est-ce possible de "jouer" sur "LIMIT 0,60" par exemple à l'aide d'un champ supplémentaire dans ma table "sbbproduit" ?

    Merci par avance de votre aide. J'ai fait bien des progrès en php depuis ces derniers mois, mais je suis loin d'être au top pour ce qui est des requêtes MySQL.

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Tu filtres déjà la requête en php via $id, comment comptes-tu associer une limite à sbbproduit.frsid ?
    Si tu escomptais faire quelque chose comme LIMIT 0,nomdecolonne, tu peux oublier, je pense que MySQL attend des valeurs constantes comme arguments de LIMIT, par contre ces valeurs peuvent être passées par variable par php.
    Et l'on en revient à ma question.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Membre du Club
    Femme Profil pro
    Presque retraitée
    Inscrit en
    Septembre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Presque retraitée
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2008
    Messages : 75
    Points : 66
    Points
    66
    Par défaut
    Bonjour,

    Merci pour cette réponse.
    Tu filtres déjà la requête en php via $id, comment comptes-tu associer une limite à sbbproduit.frsid ?
    J'ai déjà associé cette limite dans ma requête, laquelle fonctionne très bien. Ce que j'aurais voulu, c'est pouvoir faire varier cette limite selon les cas.

  4. #4
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Citation Envoyé par patriciaprovence Voir le message
    Ce que j'aurais voulu, c'est pouvoir faire varier cette limite selon les cas.
    Supposons que dans la table fournisseur tu aies une colonne limite. Ce que tu veux faire, je suppose, c'est qqe chose comme ça
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT sbbproduit.id, 
           sbbproduit.hid, 
           sbbproduit.sid, 
           sbbproduit.libelle, 
           sbbproduit.photoarticle, 
           sbbproduit.frsid, 
           sbbref.ref, 
           sbbref.libelle, 
           sbbref.societe 
    FROM sbbproduit
    INNER JOIN sbbref ON sbbproduit.libelle = sbbref.libelle 
    WHERE sbbproduit.frsid=$id 
    LIMIT (SELECT limite FROM fournisseurs WHERE id=$id)
    Tu peux toujours essayer, j'ignore si MYSQL va accepter cette syntaxe.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  5. #5
    Membre du Club
    Femme Profil pro
    Presque retraitée
    Inscrit en
    Septembre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Presque retraitée
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2008
    Messages : 75
    Points : 66
    Points
    66
    Par défaut
    J'ai testé et cela ne fonctionne pas...

    Alors j'ai procédé autrement :
    1 - j'ai ajouté un champ "qte" à ma table fournisseur auquel j'ai soit indiqué la valeur "100", pour les fournisseurs auxquels je limiterai le nombre de produits à 100, soit je n'ai rentré aucune valeur pour la majorité des fournisseurs dont le nombre de produits sera limité à 60 ;
    2 - comme j'avais fait une requête sur ma table fournisseurs, plus haut dans mon script, j'ai intégré ce champ "qte" aux données à récupérer ;
    3 - puis j'ai fait comme suit :
    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
    //ma requête sur la table fournisseurs
    $reponse = mysql_query("SELECT frsid, societe, remise, qte FROM sbbfrs WHERE frsid='$id'") or die(mysql_error());
    while ($donnees = mysql_fetch_array($reponse))
    {
    echo $donnees['societe']; //sans rapport avec le sujet de mon message
    echo $donnees['remise']; //sans rapport avec le sujet de mon message
     
    $qte = $donnees[3];
    }
     
    if ($qte == 100 ) {
    $resultat = mysql_query("SELECT sbbproduit.id, sbbproduit.hid, sbbproduit.sid, sbbproduit.libelle, sbbproduit.photoarticle, sbbproduit.frsid, sbbref.ref, sbbref.libelle, sbbref.societe FROM sbbproduit, sbbref WHERE sbbproduit.libelle = sbbref.libelle AND sbbproduit.frsid='$id' LIMIT 0,100")  or die(mysql_error());
    }
    else {
    $resultat = mysql_query("SELECT sbbproduit.id, sbbproduit.hid, sbbproduit.sid, sbbproduit.libelle, sbbproduit.photoarticle, sbbproduit.frsid, sbbref.ref, sbbref.libelle, sbbref.societe FROM sbbproduit, sbbref WHERE sbbproduit.libelle = sbbref.libelle AND sbbproduit.frsid='$id' LIMIT 0,60")  or die(mysql_error());
    }
    Comme je n'aurai que 2 (voire 3) limites différentes à mettre, j'utiliserai, si besoin un elseif.
    Ma solution est peut-être un peu lourde (je l'ai dit, je suis loin d'être experte...) mais elle a le mérite de fonctionner comme je le voulais.

    Maljuna Kris encore merci pour ton aide.

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

Discussions similaires

  1. Comment faire une requête optimisée avec limite
    Par beyo dans le forum Requêtes
    Réponses: 1
    Dernier message: 23/11/2012, 21h25
  2. Réponses: 8
    Dernier message: 12/12/2011, 11h31
  3. [MySQL] requête avec LIMIT
    Par pravine dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 15/07/2010, 12h12
  4. Réponses: 3
    Dernier message: 11/05/2010, 00h59
  5. [SQL] Problème requête avec Limit 1
    Par miss_monika dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 13/06/2007, 10h16

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