INNER JOIN语句中的不明确列

时间:2012-01-03 22:19:55

标签: php mysql

我对此感到困惑。我在互联网上搜索过,但仍然让我很困惑。我有以下表格:

会议:meeting_idtitlechairmansecretaryoccurances
房间:room_idroomdatetimemeeting_id

我希望所有内容都显示在桌面上。我的PHP如下:

    <?php

$result = mysql_query("SELECT * FROM Meetings INNER JOIN Rooms ON meeting_id = Rooms.meeting_id")
or die(mysql_error()); ;

if (mysql_num_rows($result) == 0) {
       echo 'There Arent Any Meetings Setup Yet';
    } else {

echo "<table border='0'><table border width=100%><tr><th>Title</th><th>Chairperson</th><th>Secretary</th><th>Terms of Reference</th><th>Occurances</th><th>Room</th><th>Date</th><th>Time</th>";        

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

        echo "<tr>";
        echo "<td><br/>" . $info['title']." </td>";
        echo "<td><br/>" . $info['chairperson']. "</td>";
        echo "<td><br/>" . $info['secretary']."</td>";
        echo "<td><br/>" . $info['tof']. "</td>";
        echo "<td><br/>" . $info['occurances']. "</td>";
        echo "<td><br/>" . $info['room']. "</td>";
        echo "<td><br/>" . $info['date']. "</td>";
        echo "<td><br/>" . $info['time']. "</td>";

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


?>

出现以下错误消息:

  

列&#39; meeting_id&#39;在on子句中含糊不清

我正在尝试显示会议桌中的所有字段,显然只显示房间,日期和时间。

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

您需要在联接中将两个列的前缀加上其表名,即

FROM Meetings INNER JOIN Rooms ON Meetings.meeting_id = Rooms.meeting_id

错误消息非常清楚地解释了问题,实际上:每当您指定一个名称存在于多个表中的列时,您必须明确指出您所指的表的列。

答案 1 :(得分:1)

您需要定义要从中选择的meeting_id表。

e.g。

`SELECT * FROM Meetings INNER JOIN Rooms ON Meetings.meeting_id = Rooms.meeting_id`

答案 2 :(得分:0)

错误消息指出meeting_id不明确,因此您需要指定要约束为meeting_id的表。

SELECT * FROM Meetings INNER JOIN Rooms ON Meetings.meeting_id = Rooms.meeting_id

答案 3 :(得分:0)

mysql_query("SELECT * FROM Meetings INNER JOIN Rooms ON Meetings.meeting_id = Rooms.meeting_id")

如果join列上的列名相同,则必须明确提及属于特定表的列。