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

Langage SQL Discussion :

Une seule requête au lieu de 2, possible ?


Sujet :

Langage SQL

  1. #1
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    février 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Devops
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2009
    Messages : 473
    Points : 831
    Points
    831
    Par défaut Une seule requête au lieu de 2, possible ?
    Bonjour à tous !

    Je stocke les centres d'intérêts d'un certain nombre d'utilisateurs.

    Pour celà j'ai une table CategorieCentreInteret qui permet de catégoriser les centres d'intérêts. Une catégorie peut en contenir d'autres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CategorieCentreInteret(ID, INTITULE, ID_PARENT)

    J'ai des centres d'intérêts qui ont pour parent une catégorie de centre d'intérêt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CentreInteret(ID, INTITULE, ID_CATEGORIE)

    Et enfin j'ai des utilisateurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Utilisateur(ID, NOM, PRENOM)

    Pour lier les utilisateurs et les centres d'intérêts :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UTILISATEUR_CENTREINTERET(ID_CENTREINTERET, ID_UTILISATEUR)

    Dans mon application actuellement j'ai besoin de deux requêtes pour :
    1) Afficher mes centres d'intérêts et mes catégories dans un arbre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select cci.id, cci.intitule, cci.id_parent, ci.id, ci.intitule, ci.id_categorie
    FROM categoriecentreinteret cci
    LEFT OUTER JOIN centreinteret ci ON ci.id_parent = cci.id

    2) Récupérer les centres d'intérêts de mon utilisateur et mettre en évidence dans l'arbre les centres d'intérêt qu'il a sélectionné

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select ci.id
    FROM centreinteret ci
    INNER JOIN utilisateur_centreinteret uci ON uci.id_centreinteret = ci.id
    INNER JOIN utilisateur u ON uci.id_utilisateur = u.id
    Suite à cette dernière requête je croise les deux informations.

    Est-il possible de faire d'une pierre deux coups ? C'est à dire récupérer l'ensemble des centres d'intérêts avec leurs catégories et de "marquer" les enregistrements qu'un utilisateur x a choisi ?

    Merci d'avance pour votre aide

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Consultant Teradata
    Inscrit en
    septembre 2008
    Messages
    8 217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Teradata
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2008
    Messages : 8 217
    Points : 17 139
    Points
    17 139
    Par défaut
    Oui c'est possible mais idéalement si vous pouviez illustrer par un jeu de test, la démonstration serait plus aisée.

    Un petit aparté, la modélisation des tables me paraît correcte, mais au niveau des noms de colonnes c'est plutôt raté, d'ailleurs vous vous embrouillez vous-même :
    CentreInteret(ID, INTITULE, ID_CATEGORIE)
    ...
    LEFT OUTER JOIN centreinteret ci ON ci.id_parent = cci.id
    Alors que finalement vous avez la bonne solution à portée de main :
    UTILISATEUR_CENTREINTERET(ID_CENTREINTERET, ID_UTILISATEUR)
    C'est tellement plus simple !

Discussions similaires

  1. Deux requêtes dans une seule requête, est-ce possible ?
    Par Stephane_br dans le forum Développement
    Réponses: 3
    Dernier message: 08/07/2011, 16h35
  2. [MySQL] Afficher les données dans un tableau html horizontal avec une seule requête au lieu de 6
    Par arthuro45 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/10/2010, 12h13
  3. Réponses: 2
    Dernier message: 31/01/2009, 21h49
  4. Est-ce que c'est possible en une seule requête?
    Par geraldgg dans le forum Requêtes
    Réponses: 11
    Dernier message: 30/12/2008, 19h44
  5. Une seule requête au lieu de cinq ?
    Par Klyne dans le forum Langage SQL
    Réponses: 8
    Dernier message: 06/10/2008, 13h58

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