Demande d'aide Jointure entre 3 tables !
TheBleedz
-
gugusco -
gugusco -
Bonjour,
Je vous explique un peu je suis venus ici il a pas longtemps et j'ai trouvé mon bonheurs sur le même sujet j'ai très bien compris comment ca marcher mais la je cale. J'ai du mal a imaginer comment programmer ça ! Voila j'ai écris un script qui récupère les statues de mes amis et seulement mes amis. Ça marche super bien, sauf que j'aimerai aussi que je récupère mon statue. Et la je sais pas ou je dois insérer ca et ni comment.
Voici la requête :
Merci d'avance de votre aide et bonne soirée.
Je vous explique un peu je suis venus ici il a pas longtemps et j'ai trouvé mon bonheurs sur le même sujet j'ai très bien compris comment ca marcher mais la je cale. J'ai du mal a imaginer comment programmer ça ! Voila j'ai écris un script qui récupère les statues de mes amis et seulement mes amis. Ça marche super bien, sauf que j'aimerai aussi que je récupère mon statue. Et la je sais pas ou je dois insérer ca et ni comment.
Voici la requête :
$id = htmlspecialchars($_SESSION['membre_id']);
// On se connecte à MySQL
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=bleedzer', 'root', '', $pdo_options);
// On récupère tout le contenu de la table amis
$reponse = $bdd->query("SELECT membres.membre_nom, membres.membre_prenom, amis.membre_id_amis, status.contenu,status.membre_id
FROM membres
INNER JOIN amis
ON amis.membre_id_amis = membres.membre_id
INNER JOIN status
ON status.membre_id = amis.membre_id_amis
WHERE amis.membre_id = '".$id."'");
Merci d'avance de votre aide et bonne soirée.
A voir également:
- Demande d'aide Jointure entre 3 tables !
- Ai suite 3 - Télécharger - Optimisation
- Tables des matières word - Guide
- Picasa 3 - Télécharger - Albums photo
- Photorecit 3 - Télécharger - Visionnage & Diaporama
- Zelda 3 - Accueil - Guide jeu vidéo
5 réponses
Bonjour,
J'ai trouvé une solution mais elle ne marche pas =/
J'ai ajouter a la fin de WHERE ceci :
Cella donne :
Mais problème quand j'ai modifier cette ligne plus rien ne s'affiche... J'ai essayer de la même manière mais sans la liste d'amis et la ca marche impec faudrait juste comment faire pour que ma requête accepte le "AND status.membre_id = '".$id."'". Là je sais plus trop quoi faire.
J'espère trouver une réponse a ce gros soucis !
Voici quelque infos pour vous aidez a comprendre :
Tables status :
id = l'id du statis (publication)
membre_id = l'id du membre qui a publier
membre_contenu = le contenue de la publication
Tables amis :
id = l'id de la ligne d'amis
membre_id = l'id du membre qui a ajouter l'amis
membre_id_amis =l'id qui est devenu amis avec celui qui a demander(membre_id)
Il en a encore mais bon si je sais déjà faire ca ce serrai pas mal =) Apres juste trier par date et prendre que les statue que des amis validé ! (membre_id_aut que je n'ai pas ajouter).
N'hésiter pas si vous avez besoin de plus parce la moi je suis calé j'ai lus toute la journée pour trouver une solution essayer plein de manipulation mais rien ne fait.
Bonne journée et merci d'avance !
J'ai trouvé une solution mais elle ne marche pas =/
J'ai ajouter a la fin de WHERE ceci :
WHERE amis.membre_id = '".$id."' AND status.membre_id = '".$id."'
Cella donne :
// On récupère tout le contenu de les tables
$reponse = $bdd->query("SELECT status.contenu, status.membre_id, membres.membre_nom, membres.membre_id, membres.membre_prenom, amis.membre_id_amis
FROM membres
INNER JOIN amis
ON amis.membre_id_amis = membres.membre_id
INNER JOIN status
ON status.membre_id = amis.membre_id_amis
WHERE amis.membre_id = '".$id."' AND status.membre_id = '".$id."'");
Mais problème quand j'ai modifier cette ligne plus rien ne s'affiche... J'ai essayer de la même manière mais sans la liste d'amis et la ca marche impec faudrait juste comment faire pour que ma requête accepte le "AND status.membre_id = '".$id."'". Là je sais plus trop quoi faire.
J'espère trouver une réponse a ce gros soucis !
Voici quelque infos pour vous aidez a comprendre :
Tables status :
id = l'id du statis (publication)
membre_id = l'id du membre qui a publier
membre_contenu = le contenue de la publication
Tables amis :
id = l'id de la ligne d'amis
membre_id = l'id du membre qui a ajouter l'amis
membre_id_amis =l'id qui est devenu amis avec celui qui a demander(membre_id)
Il en a encore mais bon si je sais déjà faire ca ce serrai pas mal =) Apres juste trier par date et prendre que les statue que des amis validé ! (membre_id_aut que je n'ai pas ajouter).
N'hésiter pas si vous avez besoin de plus parce la moi je suis calé j'ai lus toute la journée pour trouver une solution essayer plein de manipulation mais rien ne fait.
Bonne journée et merci d'avance !
Bon comme j'ai toujours pas de réponse, je me démerde comme je peux ^^
Voici ce que j'ai fait et ce code la marche sauf que j'aimerai que ce soit regrouper en une seul c'est possible ?
Voici ce que j'ai fait et ce code la marche sauf que j'aimerai que ce soit regrouper en une seul c'est possible ?
$reponse = $bdd->query("
SELECT membres.membre_nom, membres.membre_prenom, amis.membre_id_amis, status.contenu,status.membre_id,status.date_creation
FROM membres
INNER JOIN amis
ON amis.membre_id_amis = membres.membre_id
INNER JOIN status
ON status.membre_id = amis.membre_id_amis
WHERE amis.membre_id = '".$id."' ORDER BY date_creation");
$reponse1 = $bdd->query("
SELECT status.contenu, status.membre_id, membres.membre_nom, membres.membre_prenom,status.date_creation
FROM membres
INNER JOIN status
ON status.membre_id = membres.membre_id
WHERE status.membre_id='".$id."' ORDER BY date_creation");
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je viens d'avoir un problème assez similaire que je viens de résoudre.
J'avais aussi une triple jointure, j'ai modifié plusieurs fois ma requête pour trouver l'erreur : sans résultat.
Le problème venait de la base de donnée en elle même. Si je prends ton cas la paramètre de jointure (qui se trouve après les "ON") n'était pas vérifié. Si je prends ton exemple, je n'avais pas de correspondance entre "amis.membre_id_amis" et "membres.membre_id".
la valeur de $id existait dans une et pas dans l'autre table..
Comme il s'agit d'une jointure interne, il n'affiche pas les entrées qui n'ont pas de correspondances dans les deux tables jointes
J'avais aussi une triple jointure, j'ai modifié plusieurs fois ma requête pour trouver l'erreur : sans résultat.
Le problème venait de la base de donnée en elle même. Si je prends ton cas la paramètre de jointure (qui se trouve après les "ON") n'était pas vérifié. Si je prends ton exemple, je n'avais pas de correspondance entre "amis.membre_id_amis" et "membres.membre_id".
la valeur de $id existait dans une et pas dans l'autre table..
Comme il s'agit d'une jointure interne, il n'affiche pas les entrées qui n'ont pas de correspondances dans les deux tables jointes