2012-01-06 102 views
0

我正在嘗試將三張表連接在一起,目前爲止沒有任何成功。我設法將兩個表連接在一起,我正在提取正確的數據,但只要我在sql語句中添加了更多的單詞,就不會顯示任何數據。代碼如下:在MySQL中加入3個表格

<?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>"; 


?> 

我的數據庫表如下所示:

會議:MEETING_ID,標題,主題,主席,書記,行動

分鐘:minute_id,主題,next_subject,批准,MEETING_ID

與會者:attendees_id,MEETING_ID,用戶名

人....?

+0

你加入與會者的標準是什麼?它只是在參加者一方說「meeting_id」和「user_name」。 – 2012-01-06 00:30:28

+0

爲什麼,我只是寫了一個非常冗長的問題和答案,涵蓋了這種[確定的問題](http://stackoverflow.com/questions/12475850/how-can-an-sql-query-return-data-from-多表),我希望這將有助於澄清如何加入表的工作以及如何從數據庫中的多個表中獲取信息! – Fluffeh 2012-09-18 14:08:08

回答

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 2012-01-06 01:43:27

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 2012-01-06 01:43:32

+0

如果您有多個與會者參加單個會議,則加入會返回2條記錄。但AttendeeId會有所不同。此查詢應使所有與會者都屬於特定會議。你期待什麼結果? – Shyju 2012-01-06 02:06:34