Я смущаюсь этим. Я искал интернет, и это все еще меня путает. У меня есть следующие таблицы:
Встречи: meeting_id
, должность, chairman
, secretary
, occurances
Комнаты: room_id
, room
, date
, time
, meeting_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>"; ?>
о<?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>"; ?>
где<?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>"; ?>
Появляется следующее сообщение об ошибке:
Столбец 'meeting_id' in on является неоднозначным
Я пытаюсь отобразить все поля из таблицы совещаний и, очевидно, комнату, дату и время.
Как это исправить?
Вам нужно определить, из какой таблицы вы хотите meeting_id
.
например
`SELECT * FROM Meetings INNER JOIN Rooms ON Meetings.meeting_id = Rooms.meeting_id`
Вам необходимо префикс обоих столбцов в соединении с их именами таблиц, т.е.
FROM Meetings INNER JOIN Rooms ON Meetings.meeting_id = Rooms.meeting_id
Сообщение об ошибке объясняет проблему довольно четко, на самом деле: всякий раз, когда вы указываете столбец, имя которого существует в нескольких таблицах, вы должны быть явным, о каком столбце таблицы вы имеете в виду.
В сообщении об ошибке указано, что meeting_id неоднозначно, поэтому вам нужно указать, какую таблицу вы хотите ограничить как meeting_id.
SELECT * FROM Meetings INNER JOIN Rooms ON Meetings.meeting_id = Rooms.meeting_id
mysql_query("SELECT * FROM Meetings INNER JOIN Rooms ON Meetings.meeting_id = Rooms.meeting_id")
Когда имена столбцов одинаковы в столбцах join
, вы должны явно указать те столбцы, принадлежащие определенной таблице.