Problème requette mysql

AZdesign -  
 AZdesign -
Bonjour,

Je suis bloqué depuis quelques heures pour préparer une requete mysql et j'ai besoin de votre aide svp.

je m'explique :

j'ai créé une 3 tables :

1 - table user
- id_user
- login
- pass

2 - table projets :
- id_projets
- nom_projets

3 - droits
- id_user
- id_projets

Après avoir stocker l'id user de la table user dans une variable, je veux afficher les nom des projets de la table "projets" avec une WHERE droit.id_user = $id_user mais ca ne marche pas :(

j'ai essayé cette requete :

SELECT droits.id_user, projets.nom_projet FROM 'droits', 'projets' WHERE droits.id_user=$id_user

j'espère que c'est claire.

2 réponses

  1. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    Le problème, c'est que tu as oublié de dire que la table projets est reliée par son id à la table droits.

    Ta requête devrait plutôt être :
    SELECT droits.id_user, projets.nom_projet FROM 'droits', 'projets' WHERE droits.id_user=$id_user AND droits.id_projets = projets.id_projets

    Ou, c'est la même chose mais plus explicite à mon sens :
    SELECT droits.id_user, projets.nom_projet
    FROM droits
    INNER JOIN projets ON droits.id_projets = projets.id_projets
    WHERE droits.id_user=$id_user

    Xavier
    0
  2. AZdesign
     
    Merci beaucoup Xavier, j'ai utilisé ta requête en fin de compte

    mais j'aimerai comprendre le principe si possible?

    Cordialement,
    Anas
    0
    1. Reivax962 Messages postés 3742 Statut Membre 1 011
       
      Bonjour,

      Quand tu fais une requête croisée sur deux tables, le plus souvent, il y a un identifiant d'une table référencé dans l'autre table.
      Le moteur SQL ne connaît a priori pas cet identifiant. Donc si tu fais une requête sur la table droits et sur la table projets, il ne sait pas qu'à un droit correspond un projet. Il va donc donner tous les projets pour chaque droit.

      Il est donc nécessaire de lui expliquer que la colonne id_projets sert à relier les droits à un projet, d'où la ligne droits.id_projets = projets.id_projets.

      Je ne sais pas si j'ai été suffisamment clair...

      Xavier
      0
    2. AZdesign
       
      Bonjour,

      Oui c'est claire :)

      j'ai pu trouver un doc intéressant qui explique les jointures,

      http://sqlpro.developpez.com/cours/sqlaz/jointures/

      Merci beaucoup Xavier et bon courage :)

      Cordialement,
      Anas
      0