Liaison entre 2 tables SQL
mixa38
Messages postés
4
Statut
Membre
-
ShaBoo Messages postés 406 Statut Membre -
ShaBoo Messages postés 406 Statut Membre -
Bonjour tout le monde,
Depuis le temps que je consulte de forum de CCM, je me lance dans une question qui me turlupine !
Je bricole avec PHP/MYSQL.
J'ai 2 tables SQL, soit la table commentaires et la table membre.
--> http://images2.hiboox.com/images/4707/cszvapsb.jpg
--> http://images2.hiboox.com/images/4707/2taend7z.jpg
commentaires (id, id_sortie, auteur_id, date, com)
membre (id, prenom)
Ma requète est simple, mais je n'y arrive pas :(
Je souhaite afficher tout les commentaires (com) WHERE id_sortie = 1.
Les commentaires s'affichent avec un auteur, la date, et le commentaire à proprement parlé.
Evidemment, dans la table commentaires, il n'y a que auteur_id, et pas le prenom de l'auteur.
Le prénom de l'auteur est stocké dans la table membre.
Lorsque je fais un INNER JOIN entre commentaires et membre, avec comme clé auteur_id, j'ai uniquement les messages de auteur_id qui s'affichent, et non les messages WHERE id_sortie = 1.
select id, auteur_id, date, com, prenom FROM commentaires WHERE id_sortie LIKE '1' INNER JOIN membre ON commentaires.auteur_id = membre.id ORDER BY id ASC
J'espère avoir été compréhensible !
Merci de votre aide pour m'aiguiller sur le bon chemin !
Mixa !
Depuis le temps que je consulte de forum de CCM, je me lance dans une question qui me turlupine !
Je bricole avec PHP/MYSQL.
J'ai 2 tables SQL, soit la table commentaires et la table membre.
--> http://images2.hiboox.com/images/4707/cszvapsb.jpg
--> http://images2.hiboox.com/images/4707/2taend7z.jpg
commentaires (id, id_sortie, auteur_id, date, com)
membre (id, prenom)
Ma requète est simple, mais je n'y arrive pas :(
Je souhaite afficher tout les commentaires (com) WHERE id_sortie = 1.
Les commentaires s'affichent avec un auteur, la date, et le commentaire à proprement parlé.
Evidemment, dans la table commentaires, il n'y a que auteur_id, et pas le prenom de l'auteur.
Le prénom de l'auteur est stocké dans la table membre.
Lorsque je fais un INNER JOIN entre commentaires et membre, avec comme clé auteur_id, j'ai uniquement les messages de auteur_id qui s'affichent, et non les messages WHERE id_sortie = 1.
select id, auteur_id, date, com, prenom FROM commentaires WHERE id_sortie LIKE '1' INNER JOIN membre ON commentaires.auteur_id = membre.id ORDER BY id ASC
J'espère avoir été compréhensible !
Merci de votre aide pour m'aiguiller sur le bon chemin !
Mixa !
A voir également:
- Liaison entre 2 tables SQL
- Supercopier 2 - Télécharger - Gestion de fichiers
- Tables des matières word - Guide
- 2 ecran pc - Guide
- Faire 2 colonnes sur word - Guide
- Gta 6 trailer 2 - Guide
8 réponses
Bonjour,
Si la relation entre tes 2 tables est commentaires commentaires.auteur_id = membre.id, ta requete devrait ressembler à ceci :
Si la relation entre tes 2 tables est commentaires commentaires.auteur_id = membre.id, ta requete devrait ressembler à ceci :
SELECT c.id, auteur_id, date, com, prenom FROM commentaires c, membres m WHERE id_sortie LIKE '1' and c.auteur_id = m.id ORDER BY c.id ASC
Cette requete renvoie tt les enregistrements qui ont une correspondance entre commentaires et membre
"alors il faut faire l'équivalance avec la table membre pour retrouver le prénom de cet id ... "
VarPHP est la variable qui stockera le prenom saisi sur ta page
Si ta requete te ramene quelque chose c'est que l'utilisateur est enregistré.
Ensuite, tu recupéres l'enregistrement adequat :
Sinon tu as ceci :
Je te laisse le soin de coder en PHP, ce n'est pas trop mon fort ;p
SELECT c.id, auteur_id, date, com, prenom FROM commentaires c, membres m WHERE and c.auteur_id = m.id ORDER BY c.id ASC
"alors il faut faire l'équivalance avec la table membre pour retrouver le prénom de cet id ... "
SELECT id as VarPHP2 FROM membres WHERE prenom = VarPHP
VarPHP est la variable qui stockera le prenom saisi sur ta page
Si ta requete te ramene quelque chose c'est que l'utilisateur est enregistré.
Ensuite, tu recupéres l'enregistrement adequat :
SELECT c.id, auteur_id, date, com, prenom FROM commentaires c, membres m WHERE c.auteur_id = m.id c.auteur_id = VarPHP2 ORDER BY c.id ASC
Sinon tu as ceci :
SELECT c.id, auteur_id, date, com, prenom FROM commentaires c, membres m WHERE c.auteur_id = m.id c.auteur_id = (SELECT id FROM membre WHERE prenom = VarPHP) ORDER BY c.id ASC
Je te laisse le soin de coder en PHP, ce n'est pas trop mon fort ;p
Il y a deux sources possibles de recherche pour avoir les même infos: il y a soit un id, soit un nom d'utilisateur, je pense qu'un "WHERE c.auteur_id = m.id Or
c.auteur_id = (SELECT id FROM membre WHERE prenom = VarPHP)" doit le faire (vérifier que la syntaxe du "Or" en MySql).
,o)
Polux
c.auteur_id = (SELECT id FROM membre WHERE prenom = VarPHP)" doit le faire (vérifier que la syntaxe du "Or" en MySql).
,o)
Polux
Merci pour ta réponse ShaBoo !
Ta requète fonctionne bien ... mais de la même manière que ma requète INNER JOIN citée ci-dessus.
C'est à dire que le résultat affiché est uniquement les lignes WHERE c.auteur_id = m.id sans les lignes WHERE id_sortie LIKE '1'.
Mais moi j'aimerais bien les 2 !
RQ = commentaires.auteur_id n'a pas forcément d'équivalence dans auteur.id
Merci pour votre aide !
Mixa !
Ta requète fonctionne bien ... mais de la même manière que ma requète INNER JOIN citée ci-dessus.
C'est à dire que le résultat affiché est uniquement les lignes WHERE c.auteur_id = m.id sans les lignes WHERE id_sortie LIKE '1'.
Mais moi j'aimerais bien les 2 !
RQ = commentaires.auteur_id n'a pas forcément d'équivalence dans auteur.id
Merci pour votre aide !
Mixa !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Pourquoi utiliser LIKE ??? Avec Where c.auteur_id = m.id And id_sortie = 1, ça ne marche pas ?
;o)
polux
Pourquoi utiliser LIKE ??? Avec Where c.auteur_id = m.id And id_sortie = 1, ça ne marche pas ?
;o)
polux
"RQ = commentaires.auteur_id n'a pas forcément d'équivalence dans auteur.id "
Tu veux dire membres.id !!!
Je reprend ta problématique, car il y a un truc que je pige pas :
"Je souhaite afficher tout les commentaires (com) WHERE id_sortie = 1."
(merci Polux ;p)
"Les commentaires s'affichent avec un auteur, la date, et le commentaire à proprement parlé.
Evidemment, dans la table commentaires, il n'y a que auteur_id, et pas le prenom de l'auteur.
Le prénom de l'auteur est stocké dans la table membre."
"RQ = commentaires.auteur_id n'a pas forcément d'équivalence dans auteur.id"
Et c'est là que le bat blesse, car il y a de la contradiction dans ce que tu veux !!!
Tu veux dire membres.id !!!
Je reprend ta problématique, car il y a un truc que je pige pas :
"Je souhaite afficher tout les commentaires (com) WHERE id_sortie = 1."
SELECT id, auteur_id, date, com FROM commentaires WHERE id_sortie = '1'
(merci Polux ;p)
"Les commentaires s'affichent avec un auteur, la date, et le commentaire à proprement parlé.
Evidemment, dans la table commentaires, il n'y a que auteur_id, et pas le prenom de l'auteur.
Le prénom de l'auteur est stocké dans la table membre."
"RQ = commentaires.auteur_id n'a pas forcément d'équivalence dans auteur.id"
Et c'est là que le bat blesse, car il y a de la contradiction dans ce que tu veux !!!
En effet, je voulais dire membre.id :oops: (merci ShaBoo pour ton oeil attentif)
J'avais zappé une info, encore une fois :oops: ...
Je reprends depuis le début de ma problèmatique.
Un user peut poster un commentaire soit en étant logué, donc il a un id (il ne rentre donc pas son nom au clavier), soit sans être logué, alors il n'a pas d'id, mais un prénom classique genre toto ou tutu qu'il saisi au clavier.
Donc dans mon champ commentaires.auteur_id, il y a soit un id, soit un nom d'utilisateur.
Lors de l'affichage des commentaires, si il y a un id dans commentaires.auteur_id, alors il faut faire l'équivalance avec la table membre pour retrouver le prénom de cet id ...
... Si il y a pas d'id, donc un prénom genre toto ou tutu, on passe à la suite.
(ps=j'ai une colonne dans la table commentaire qui me permet de valider (ou pas) que la ligne vient d'un user logué ou pas)
Merci
J'avais zappé une info, encore une fois :oops: ...
Je reprends depuis le début de ma problèmatique.
Un user peut poster un commentaire soit en étant logué, donc il a un id (il ne rentre donc pas son nom au clavier), soit sans être logué, alors il n'a pas d'id, mais un prénom classique genre toto ou tutu qu'il saisi au clavier.
Donc dans mon champ commentaires.auteur_id, il y a soit un id, soit un nom d'utilisateur.
Lors de l'affichage des commentaires, si il y a un id dans commentaires.auteur_id, alors il faut faire l'équivalance avec la table membre pour retrouver le prénom de cet id ...
... Si il y a pas d'id, donc un prénom genre toto ou tutu, on passe à la suite.
(ps=j'ai une colonne dans la table commentaire qui me permet de valider (ou pas) que la ligne vient d'un user logué ou pas)
Merci