2011-12-04 12 views
2

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がリソースであることを予期しています。前進!

答えて

0

あなたの文字列の連結がスペースを逃すように見えるので、最初の2行は... cinema、relationship、moviewhere cinema.city = city.id.その場合、sqlはシネマを2回読み込みます...これは単純なことでしょうか?私はそれを送信する前にクエリをエコーし​​ます。

+0

はい、あなたはその通りでした!しかし、新しいエラーが発生しました。警告:mysql_fetch_array()は、パラメータ1がリソースであり、75行目のfile.phpで指定された文字列であると想定しています。行75:while($ result = mysql_fetch_array($ query)){ チェックされたSQLの結果は0です。 – 01e5Dk

+0

mysql_queryは2つのパラメータをとります.2番目のパラメータは接続ハンドルであり、それが欠落しています。あなたのmysql_con.phpには、$ cx = mysql_connect($ host、$ user、$ password)のような行がなければなりません。mysql_query($ query、$ cx)を呼び出す必要があります。 – gregory

関連する問題