Problème requette mysql

Fermé
AZdesign - 21 nov. 2011 à 00:49
 AZdesign - 22 nov. 2011 à 22:28
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

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
21 nov. 2011 à 10:43
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
Merci beaucoup Xavier, j'ai utilisé ta requête en fin de compte

mais j'aimerai comprendre le principe si possible?

Cordialement,
Anas
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
22 nov. 2011 à 09:46
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
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