Я получаю сообщение об ошибке «Не уникальная таблица / псевдоним» при попытке отобразить данные из базы данных MySQL в таблицу. Предположим, что это как-то связано с внешними ключами.
Здесь SQL для создания таблиц, после слов вставляются некоторые значения. SQL работал нормально, никаких проблем не возникало, но я добавил код, поскольку все это идет рука об руку с отображением таблицы на экране.
CREATE TABLE city (
id int not null primary key auto_increment,
name varchar(30) not null
) type=innodb;
CREATE TABLE cinema (
id int not null primary key auto_increment,
name varchar(50) not null,
city int not null,
foreign key(city) references city(id)
) type=innodb;
CREATE TABLE movie (
id int not null primary key auto_increment,
name varchar(30) not null
) type=innodb;
CREATE TABLE relationship (
whattime time NOT NULL,
whichdate date NOT NULL,
movieid int not null,
cinemaid int not null,
primary key (cinemaid, movieid),
foreign key(movieid) references movie(id),
foreign key(cinemaid) references cinema(id)
) type=innodb;
INSERT INTO city (id, name) VALUES (1, 'Paris'), (2, 'Copenhagen'), (3, 'London'), (4, 'Lisbon')
INSERT INTO movie (id, name) VALUES (1, 'The Church')
INSERT INTO cinema (id, name, city) VALUES (1, 'Pathé', 1), (2, 'Cinemaxx', 2), (3, 'Cineworld', 3), (4, 'ZON Lusomundo', 4)
INSERT INTO relationship (whattime, whichdate, movieid, cinemaid) VALUES ('21:00:00', '2011-12-27', 1, 1), ('19:30:00', '2011-12-28', 1, 2), ('20:00:00', '2011-12-27', 1, 3), ('21:00:00', '2012-01-02', 1, 4)
Вот php, который дает мне Не уникальная таблица / псевдоним: 'cinema' ошибка. Есть идеи, почему это так?
<?php
include "inc/mysql_con.php";
mysql_select_db($db) or die(mysql_error());
$query = "select city.name, cinema.name, movie.name, date, time from city, cinema, relationship, movie";
$query .= "where cinema.city = city.id";
$query .= "and cinemaid = cinema.id";
$query .= "and movieid = movie.name";
$query .= "order by date";
mysql_query($query) or die(mysql_error());
echo "<table id='premiere'>";
echo "<tr> <th>CITY</th> <th>CINEMA</th> <th>DATE</th> <th>TIME</th></tr>";
while($result = mysql_fetch_array( $query )) {
echo "<tr><td>";
echo $result['city.name'];
echo "</td><td>";
echo $result['cinema.name'];
echo "</td><td>";
echo $result['date'];
echo "</td><td>";
echo $result['time'];
echo "</td></tr>";
}
echo "</table>";
?>
UPDATE:
Теперь я получил правильный запрос sql, код ниже
SELECT city.name, cinema.name, whichdate, whattime
FROM city, cinema, relationship, movie
WHERE cinema.city = city.id
AND cinemaid = cinema.id
ORDER BY whichdate
Хорошо отображает таблицу в SQL, но не в PHP:
ОШИБКА: Предупреждение: mysql_fetch_array () ожидает, что параметр 1 будет ресурсом, значение NULL в content.php в строке 75
строка 75: while ($ query = mysql_fetch_array ($ result)) {
Помощь будет оценена.