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 :

récupérer les n premiers articles de chaque catégorie, n = la valeur du champ 'nombre' de la catégorie corresp


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Points : 14
    Points
    14
    Par défaut récupérer les n premiers articles de chaque catégorie, n = la valeur du champ 'nombre' de la catégorie corresp
    Bonsoir,

    Je souhaitais vous poser une question concernant un cas bien précis que je n'ai pas réussi à résumer dans le sujet de ce message.

    Le problème est simple en apparence, j'ai deux tables : une article et une categorie, la jointure entre les deux se fait par la clef id_categorie.

    Je souhaite afficher les n derniers articles de chaque catégories.

    Hé hé, comment faire ? Alors je crois que c'est possible, avec MySQL, de faire cela en une requête, via un group by et un limit. Mais ce n'est pas standard.

    Ma question est donc la suivante : d'après vous, vaut-il mieux tout récupérer et, via PHP, ne conserver que les n articles qui m'intéressent ? Ou faut-il faire autant de requêtes qu'il y a de catégories ?

    Autrement dit, est-il préférable d'exécuter une unique requête mais qui rapatrie des données qui, au final, ne seront pas utilisées (puisque je n'afficherai que les n dernières, par exemple) ? Ou faut-il ne récupérer que les enregistrement que je vais réellement afficher, mais en exécutant autant de requêtes qu'il y a de catégories (actuellement, 48, mais cela pourra dépasser les 100) ?

    Merci pour vos lumières

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Réponse dans cette source MySQL.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Merci pour cette réponse, que je n'ai pas réussie à trouver par moi-même sur le forum. Désolé.

    Par contre, j'avais simplifié ma problématique qui, en réalité, est un peu plus complexe.

    Le nombre de résultats à exploiter diffère selon la catégorie. Et ce nombre figure dans le champ 'nombre' de la table catégorie.

    Par exemple, pour la catégorie 'meteo', le champ 'nombre' indique 8, et cela suppose que les 8 premiers articles de cette catégorie 'météo' seront exploités. Ce nombre de 8 pourra varier, car cette valeur peut être définie par l'utilisateur via le backoffice.

    Une autre catégorie, 'longitude', pourra avoir un champ 'nombre' égal à 3, et il faudra alors n'exploiter que les 3 premiers articles.

    Ma question reste donc entière avec cette problématique : si je dois récupérer les n premiers articles de chaque catégorie, avec n = la valeur du champ 'nombre' de la catégorie correspondante, et que je peux avoir 100 catégories, que vaut-il mieux :

    - générer 100 requêtes ?
    - générer une seule requête en rapatriant l'ensemble des articles puis, en PHP, gérer l'affichage du nombre d'article souhaité selon le champ 'nombre' de chaque catégorie ?
    - une requête "magique" permet de gérer cela simplement ?

    La première solution génère beaucoup de requêtes...
    La seconde rapatrie des données inutiles...

    À votre avis, vers quelle solution se tourner ?

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 014
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 014
    Points : 23 702
    Points
    23 702
    Par défaut
    Bonjour,

    Sans avoir le schéma sous les yeux, c'est dur de proposer une éventuelle requête magique.
    Toutefois, en s'appuyant sur la requête proposée dans les sources, pourquoi ne pas remplacer, dans cette requête, le nombre N par la valeur associée à chaque catégorie ?
    Ça peut se tenter...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

Discussions similaires

  1. Réponses: 8
    Dernier message: 18/05/2013, 15h21
  2. Réponses: 1
    Dernier message: 04/09/2010, 12h07
  3. Réponses: 5
    Dernier message: 24/01/2006, 14h25
  4. Réponses: 8
    Dernier message: 02/11/2005, 14h16
  5. comment récupérer les x premiers enregistrements
    Par laurent82 dans le forum SQL
    Réponses: 7
    Dernier message: 12/12/2004, 16h29

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