MySQLデータベースからテーブルにデータを表示しようとしているときに "ユニークでないテーブル/エイリアス"というエラーが表示されます。それは外部キーと関係があると仮定します。テーブルに高度なSQLクエリを入力する - ユニークでないテーブルエイリアス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、です。なぜそれがどんなアイデアですか?
<?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でテーブルの罰金が表示されます。 ($ query = mysql_fetch_array($ result)){
ご協力ありがとうございます。エラー:警告:mysql_fetch_array()は、パラメータ1がリソースであることを予期しています。前進!
はい、あなたはその通りでした!しかし、新しいエラーが発生しました。警告:mysql_fetch_array()は、パラメータ1がリソースであり、75行目のfile.phpで指定された文字列であると想定しています。行75:while($ result = mysql_fetch_array($ query)){ チェックされたSQLの結果は0です。 – 01e5Dk
mysql_queryは2つのパラメータをとります.2番目のパラメータは接続ハンドルであり、それが欠落しています。あなたのmysql_con.phpには、$ cx = mysql_connect($ host、$ user、$ password)のような行がなければなりません。mysql_query($ query、$ cx)を呼び出す必要があります。 – gregory