プロが教えるわが家の防犯対策術!

関係有りそうな部分だけ抜粋します。

mysqlで外部キーを設定して、
下記のようなSQLを実行してみましたが、
#1066 - Not unique table/alias: 'tie_up'と
エラーメッセージが表示されました。
何がおかしいのでしょうか?
外部キーは「song」テーブルの「tie_up_1_ID」、同「song」テーブルの「tie_up_2_ID」、
それと「tie_up」テーブルの「tie_up」です。

SQLを触るの5年振りなんで・・・。

SELECT *
FROM ((((( song left JOIN kashu ON song.kashu_ID = kashu.kashu_ID)
left JOIN sakushi ON song.sakushi_ID = sakushi.sakushi_ID)
left JOIN sakkyoku ON song.sakkyoku_ID = sakkyoku.sakkyoku_ID)
left JOIN hennkyoku ON song.hennkyoku_ID = hennkyoku.hennkyoku_ID)
left JOIN tie_up ON song.tie_up_1_ID = tie_up.tie_up_ID)
left JOIN tie_up ON song.tie_up_2_ID = tie_up.tie_up_ID;

「mysqlでJOIN文」の質問画像

A 回答 (1件)

> #1066 - Not unique table/alias: 'tie_up'と


> エラーメッセージが表示されました。

uniqueという英単語の意味が分からなければ英和辞書を参照。
http://eow.alc.co.jp/search?q=unique


今回,tie_upというのは別名(alias)ではなく実表名(table)だったわけですが,

> left JOIN tie_up ON song.tie_up_1_ID = tie_up.tie_up_ID)
> left JOIN tie_up ON song.tie_up_2_ID = tie_up.tie_up_ID;

と同一表を2度 用いたいのであれば,tie_up.tie_up_ID と言われてもそのtie_up表というのは not unique table だから,1度目に登場するtie_up表なのか,2度目に登場するtie_up表なのか,列別名を与えて区別してくれ,と言っているわけです。
    • good
    • 3

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!