Demande d'aide Jointure entre 3 tables !

TheBleedz -  
 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 :
	$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.

5 réponses

  1. TheBleedz
     
    Toujours pas trouver de solution help plz
    1
  2. TheBleedz Messages postés 38 Statut Membre
     
    Toujours personne ?
    1
  3. TheBleedz
     
    Bonjour,
    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 !
    0
  4. TheBleedz Messages postés 38 Statut Membre
     
    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 ?
    	$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");
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. gugusco
     
    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
    0
    1. Mopra-L Messages postés 151 Date d'inscription   Statut Membre Dernière intervention   6
       
      Pour résoudre ce problème, il est nécessaire de faire un LEFT JOIN ou RIGHT JOIN. Ainsi, si la correspondance n'est pas trouvé, la ligne sera tout de même retourné, mais avec "NULL" à la place de chaque champ de la table
      0
    2. gugusco
       
      Oui effectivement, il faut faire une jointure externe.
      0