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 d'affichage avec Jointure MySQL


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Problème d'affichage avec Jointure MySQL
    Bonjour à tous,

    je viens demander vos lumières.
    Je suis actuellement dans le développement d'un système de galerie et je souhaiterais afficher en début de tableau les différentes galeries avec image principale du chien.

    Voici l'exemple de mes deux tables
    TABLE "chien"

    ID ID_galerie Nom_chien image level
    1 1 BEBONS image_blablatoutou.jpg 1
    2 1 PHILIPINS image_touto.jpg 2
    3 1 CONSIVAL image_223.jpg 2
    4 1 PLUAUD image_fdfd.jpg 1

    TABLE "chien_galerie"

    ID ID_chien image actif
    1 2 exemple1.jpg 1
    2 2 exemple3.jpg 1
    3 3 exemple4.jpg 1
    4 1 exemple5.jpg 1

    Comme le montrent les tableaux ci-dessus PHILIPINS a 2 images dans sa galerie.
    Je souhaiterais pouvoir afficher des petites vignettes de la table chien_galerie juste après l'image principale du chien avec un système de jointure entre les deux tables.
    Mais ça ne fonctionne pas! Soit ma requête est mauvaise soit ça m'affiche plein de fois l'image principale je ne comprends pas.

    Voici ma requête actuelle, j'ai l'impression lors des résultats qu'il ne prend pas en considération la première table 'chien c' mais la deuxième, et que le WHERE et AND n'est pas pris non plus en considération ce qui m'affiche un résultat mélangé entre les photos de la première table et la galerie et le nombre de résultats...

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
     
    $reponse = $bdd->query('SELECT c.ID ID_Chien, c.image image_chien, c_g.image image_ga 
    						FROM chien c
    						INNER JOIN chien_galerie c_g
    						ON c.ID = c_g.ID_chien
    						WHERE c.ID_galerie='.$ID.' 
    						AND c.level=1 
    						ORDER BY c.ID ASC');
     
     
    ?>

    Merci pour votre aide. En espérant avoir été à peu près explicite.

  2. #2
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Si interrogation sur l'ID du chien alors
    essayer plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT c.ID ID_Chien, c.image image_chien, c_g.image image_ga 
    						FROM chien c
    						INNER JOIN chien_galerie c_g
    						ON c.ID = c_g.ID_chien
    						WHERE c.ID ='.$ID.' 
    						AND c.level=1
    Ainsi au niveau du retour d'information
    =>
    Pour BEBONS (ID=1) on aura une ligne avec image_blablatoutou.jpg + exemple5.jpg

    Pour PHILIPPINS (ID=2) on aura rien car son level est à 2 , idem pour CONSIVAL (ID=3)

    Pour PLUAUD (ID=4) on aura rien car son ID ne figure pas dans la table "chien_galerie" (ID_CHIEN)

    Bon en espérant que je ne me suis pas mélangé les pattes
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  3. #3
    Membre averti
    Profil pro
    Administrateur
    Inscrit en
    Mai 2008
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 237
    Points : 433
    Points
    433
    Par défaut
    Il est nettement plus commode de gérer les images dans une même table comme ceci

    Table : chien

    id_chien id_galerie level nom_chien
    1 1 1 BEBONS
    2 1 2 PHILIPINS
    3 1 2 CONSIVAL
    4 1 1 PLUAUD


    Table : chien_galerie
    La colonne poids vous permettra de trier les images, l'image de poids 0 étant la photo principale.
    Au lieu d'une colonne actif égale à 0 ou 1, une table contenant seulement les id_image inactifs est une bonne alternative.

    id_image id_chien actif poids image
    1 1 1 0 image_blablatoutou.jpg
    2 1 1 0 exemple5.jpg
    3 2 1 0 image_touto.jpg
    4 2 1 1 exemple1.jpg
    5 2 1 2 exemple3.jpg
    6 3 1 0 image_223.jpg
    7 3 1 1 exemple4.jpg
    8 4 1 1 image_fdfd.jpg

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT a.id_chien, a.nom_chien, i.id_image, i.image
    FROM chiens a
    INNER JOIN chien_galerie i ON i.id_chien = a.id_chien
    WHERE a.level = 1 AND a.id_galerie = ' . $id_galerie . ' 
    ORDER a.id_chien, i.poids ASC

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Dans tous les cas de modélisation présenté il y a une faute. La table CHIEN, ne devrait pas contenir de données d'image puisque vous avez une table de toutes les images. Il suffit dans votre table chien de rajouter une colonne spécifiant la clef de l'image par défaut.

    Imaginez que l'utilisateur veille changer d'image, changer un id est beaucoup plus simple que de changer tout un chemin. Et cela coute moins cher en stockage !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. [MySQL] Problème d'affichage avec Mysql
    Par Bathou dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/06/2008, 17h31
  2. problème d'affichage avec printf
    Par sorari dans le forum C++
    Réponses: 12
    Dernier message: 08/03/2005, 18h30
  3. Réponses: 6
    Dernier message: 19/10/2004, 13h46
  4. Problème d'affichage avec trace
    Par WriteLN dans le forum Flash
    Réponses: 10
    Dernier message: 22/10/2003, 16h59
  5. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33

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