2012-01-06 3 views
0

Я пытаюсь объединить три таблицы вместе без каких-либо успехов. Мне удалось объединить две таблицы, и я извлекаю нужные данные, но как только я добавлю еще несколько слов в свой SQL-запрос, данные не отображаются. код выглядит следующим образом:Объединение 3 таблиц в 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>"; 


?> 

моих таблиц базы данных следующим образом:

Meetings: MEETING_ID, название, предмет, председатель, секретарь, действия

Протокол: minute_id, при условии, next_subject, утверждение , MEETING_ID

участников: attendees_id, MEETING_ID, имя пользователя

кого ....?

+0

Какие критерии вы присоединяетесь к участникам? Он просто говорит «meeting_id» и «user_name» на стороне участников. –

+0

Почему я просто написал очень длинный вопрос и ответ, который охватывает этот точный [вопрос] (http://stackoverflow.com/questions/12475850/how-can-an-sql-query-return-data-from- несколько таблиц), которые, я надеюсь, помогут выяснить, как объединения работают с таблицами и как получать информацию из нескольких таблиц в вашей базе данных! – Fluffeh

ответ

3

таблицей Присутствующей не соединен правильно.

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' 

Ваш SQL будет только возвращать собрания, в которых есть участники и минуты. Если собрание не имеет этих изменений, измените инструкции INNER JOIN на LEFT JOIN.

+0

Не могли бы вы рассказать мне, почему я получаю те же две данные, которые отображаются на экране один под другим? – 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 

Вы можете заменить 25 с переменной

+0

Не могли бы вы рассказать мне, почему я получаю те же две данные, которые отображаются на экране один под другим? – user1114080

+0

Если у вас более одного участника на одном собрании, объединение вернет вам 2 записи. Но AttendeeId будет отличаться. Этот запрос предполагает, что все участники будут принадлежать к чистому meeeting. Какой результат вы ожидаете? – Shyju

Смежные вопросы