2012-01-06 7 views
0

J'essaye de joindre trois tables ensemble sans aucun succès jusqu'ici. J'ai réussi à joindre deux tables ensemble et j'extrais les bonnes données, mais dès que j'ajoute quelques mots de plus à mon instruction sql, aucune donnée n'est affichée. le code est le suivant:Joindre 3 tables dans MySQL

<?php 
$id = $_GET['meeting_id']; 

$result = mysql_query("SELECT * FROM Meetings INNER JOIN Minutes ON Meetings.meeting_id = Minutes.meeting_id INNER JOIN attendees ON attendees.meeting_id AND attendees.username WHERE Minutes.approval = 'approved' AND Meetings.meeting_id = '$id'") 
or die(mysql_error()); 

if (mysql_num_rows($result) == 0) { 
     echo '<h3>There Arent Any Minutes For This Meeting Yet</h3>'; 
    } else { 

while($info = mysql_fetch_array($result)) 
{ 

     echo "<tr>"; 
     echo "<td><br/>" .'Title: '. $info['title']." </td>"; 
     echo "<td><br/><br/>" .'Subject: '. $info['subject']. "</td>"; 
     echo "<td><br/><br/>" .'Next Subject: '. $info['next_subject']."</td>"; 
     echo "<td><br/><br/>" .'Attendees: '. $info['username']."</td>"; 


     } 
    } 
echo "</tr>"; 
echo "</table>"; 


?> 

mes tables de base de données sont les suivantes:

Réunions: MEETING_ID, titre, sujet, président, secrétaire, action

Minutes: minute_id, sous réserve, next_subject, approbation , MEETING_ID

participants: attendees_id, MEETING_ID, nom d'utilisateur

quelqu'un ....?

+0

Quels critères joignez-vous aux participants? Il indique simplement "meeting_id" et "user_name" du côté des participants. –

+0

Pourquoi, je viens d'écrire une très longue question et une réponse qui couvre exactement ce [sorte de question] (http://stackoverflow.com/questions/12475850/how-can-an-sql-query-return-data-from- plusieurs tables) qui, je l'espère, vous aidera à clarifier comment les jointures fonctionnent sur les tables et comment obtenir des informations à partir de plusieurs tables dans votre base de données! – Fluffeh

Répondre

3

Le tableau des participants n'est pas rejoint correctement.

SELECT * 
    FROM Meetings 
INNER JOIN Minutes ON Meetings.meeting_id = Minutes.meeting_id 
INNER JOIN attendees ON Meetings.meeting_id = attendees.meeting_id 
WHERE Minutes.approval = 'approved' 
    AND Meetings.meeting_id = '$id' 

Votre SQL renverra seulement les réunions qui ont des participants et des minutes. Si une réunion ne les possède pas, modifiez les instructions INNER JOIN à LEFT JOIN.

+0

pourriez-vous me dire pourquoi je reçois les mêmes deux données affichées sur l'écran l'un sous l'autre? – user1114080

2
SELECT Meetings.Meeting_Id,Meetings.Title,Meetings.Subject, 
Minutes.Subject AS MinuteSubject, 
Attendees.AttendeesID 
FROM 
Meetings 
INNER JOIN 
Minutes 
ON Meetings.Meeting_id=Minutes.Meeting_Id 
INNER JOIN 
Attendees 
ON Attendees.Meeting_id=Meetings.Meeting_ID 
WHERE Meetings.Meeting_id=24 

Vous pouvez remplacer 25 avec votre variable

+0

pourriez-vous me dire pourquoi je reçois les deux mêmes données affichées sur l'écran l'un sous l'autre? – user1114080

+0

Si vous avez plus d'un participant pour une seule réunion, la jointure vous renverra 2 enregistrements. Mais AttendeeId sera différent. Cette requête est supposée faire en sorte que tous les participants appartiennent à une réunion purticular. Quel résultat es-tu en train d'attendre? – Shyju