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 avec un select + jointure


Sujet :

Requêtes MySQL

  1. #1
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut problème avec un select + jointure
    Bonsoir je me suis fais une base de donnée pour stocker 2 tables contenant chacune quelque info concernant des images.
    Ma première table db_catgalery:
    1. id (int) primary
    2. cat_num (int)
    3. categories (varchar)

    Ma deuxième table db_galery:
    1. id (int) primary
    2. cat_num (int)
    3. pict_name (varchar)


    Je souhaite récupérer tous les pict_name venant du même cat_num donc si vous voulez:
    Cat_galery ce présente comme ceci:
    1. cat_num = 1
    2. categories = motos

    galery :
    1. cat_num = 1
    2. pict_name = harley.jpg

    Lorsque j'effectue ma requête je récupère toutes les photos de tous les cat_num alors qu'il ne me faut que celle de sa catégorie , donc tous les 1 qui correspond au motos par exemple.
    Voici ma requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT db_catgalery.cat_num, db_catgalery.categories, db_galery.cat_num, db_galery.pict_name 
    FROM db_catgalery, db_galery 
    WHERE db_catgalery.cat_num = db_galery.cat_num = 1

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 72
    Points : 71
    Points
    71
    Par défaut
    Salut,

    Une solution consisterai à procéder ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT
      db_galery.cat_num, 
      db_catgalery.categories, 
      db_galery.pict_name 
    FROM db_catgalery 
      JOIN db_galery ON (db_galery.cat_num = db_galery.cat_num) 
    WHERE db_catgalery.cat_num = 1
    L'idéal pour ta table db_galery sera de se référer à l'id plutot qu'au cat_num qui je suppose sert à définir l'ordre d'apparition.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Dans ta requête ce qui n'allais pas c'est que tu met 2 égalités sur la même ligne, si tu vais remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE db_catgalery.cat_num = db_galery.cat_num = 1
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE db_catgalery.cat_num = db_galery.cat_num
      AND db_catgalery.cat_num = 1
    Ca aurais marché, mais c'est l'ancienne facon d'écrire les jointures, la forme de big_ben3333 est la nouvelle norme, je te conseille donc de l'utiliser

  4. #4
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    oui mais je ne comprend pas encore la nouvelle synthaxe
    j'avais fais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT db_catgalery.categories, db_galery.cat_num, db_galery.pict_name 
    FROM db_catgalery, db_galery 
    WHERE db_galery.cat_num = :num AND db_catgalery.cat_num = :num
    J'utilise PDO , mais j'ai utiliser la requête proposé afin de comprendre la synthaxe

  5. #5
    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 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 779
    Points
    23 779
    Par défaut
    Bonjour,
    Puisque vous commencez en SQL, prenez tout de suite de bonnes habitudes .
    C'est effectivement la syntaxe de big_ben3333 qui est la meilleure. D'abord une jointure, et ensuite dans le WHERE la condition de sous-sélection. Comme ça, chaque chose est à sa place.
    Mettre les conditions de jointures dans le WHERE n'est pas faux synthaxiquement (selon la première norme SQL), mais ça pose rapidement des problèmes quand les requêtes se complexifient...
    Si vous ne comprenez pas la syntaxe, je vous conseille le tutoriel ici.

    ced

  6. #6
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    merci je me suis mis a la nouvelle synthaxe

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

Discussions similaires

  1. problème avec un select max
    Par bobic dans le forum Oracle
    Réponses: 7
    Dernier message: 14/11/2005, 11h22
  2. [MySQL] Problème avec un SELECT
    Par glloq8 dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 19/10/2005, 15h10
  3. []Problème avec un "Select Case" : Instructions et..
    Par Olun dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/09/2005, 13h32
  4. Problème avec un SELECT
    Par birkoss dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/08/2005, 19h04
  5. [struts][JSP][select] problème avec le select
    Par redge_touch dans le forum Struts 1
    Réponses: 4
    Dernier message: 14/01/2004, 10h05

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