重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

下記の'←追加'と書いた部分を追加して実行しましたが、動いてくれません。
ご教授お願いします。

("SELECT
song.song_ID,
song.song_name,
song.song_name_yomi,
kashu.kashu,
ka2.kashu as kashu2,
ka3.kashu as kashu3,
ka4.kashu as kashu4,
ka5.kashu as kashu5,
ka6.kashu as kashu6,
ka7.kashu as kashu7,
ka8.kashu as kashu8,
ka9.kashu as kashu9,
ka10.kashu as kashu10,
kashu.kashu_yomi,
sakushi,
sakushi_yomi,
sakkyoku,
sakkyoku_yomi,
hennkyoku,
hennkyoku_yomi,
tie_up.tie_up,
ti2.tie_up as tie_up2
kashu_yomi, ←追加
ky2.kashu_yomi as kashu_yomi2 ←追加
FROM ((((((((((((((((
song
left JOIN kashu ON song.kashu_1_ID = kashu.kashu_ID)
left JOIN kashu_yomi ON song.kashu_1_ID = kashu.kashu_ID) ←追加
left JOIN kashu_yomi ky2 ON song.kashu_2_ID = ky2.kashu_ID) ←追加
left JOIN kashu ka2 ON song.kashu_2_ID = ka2.kashu_ID)
left JOIN kashu ka3 ON song.kashu_3_ID = ka3.kashu_ID)
left JOIN kashu ka4 ON song.kashu_4_ID = ka4.kashu_ID)
left JOIN kashu ka5 ON song.kashu_5_ID = ka5.kashu_ID)
left JOIN kashu ka6 ON song.kashu_6_ID = ka6.kashu_ID)
left JOIN kashu ka7 ON song.kashu_7_ID = ka7.kashu_ID)
left JOIN kashu ka8 ON song.kashu_8_ID = ka8.kashu_ID)
left JOIN kashu ka9 ON song.kashu_9_ID = ka9.kashu_ID)
left JOIN kashu ka10 ON song.kashu_10_ID = ka10.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 ti2 ON song.tie_up_2_ID = ti2.tie_up_ID where song_name like '%%'" ))

「mysqlでのsql文」の質問画像

A 回答 (6件)

#1、#2、#5です。


#3さんへの回答の補足を見落としてました。

原因は From にあります。

> left JOIN kashu ON song.kashu_1_ID = kashu.kashu_ID)
> left JOIN kashu_yomi ON song.kashu_1_ID = kashu.kashu_ID) ←追加
> left JOIN kashu_yomi ky2 ON song.kashu_2_ID = ky2.kashu_ID) ←追加

<結合の方法> JOIN <テーブル名> ON <結合列の条件>
であるべきが
<結合の方法> JOIN <列名> ON <結合列の条件>
になってる。

これ、kashu_yomi は1行目の
left JOIN kashu ON song.kashu_1_ID = kashu.kashu_ID)
で拾えるので2行目は不要。
3行目はテーブル名を記述するのが正しいので
left JOIN kashu ky2 ON song.kashu_2_ID = ky2.kashu_ID) ←追加
です。

ただし、selectを
ti2.tie_up as tie_up2
kashu.kashu_yomi, ←追加
ky2.kashu_yomi as kashu_yomi2 ←追加
と変更することも必要。
    • good
    • 0
この回答へのお礼

ありがとうございます。
無事動きました。

お礼日時:2013/07/16 19:31

#1,#2です。


書きようがあいまいだったようで申し訳ない。

> ti2.tie_up as tie_up2
> kashu_yomi, ←追加
> ky2.kashu_yomi as kashu_yomi2 ←追加

上記3行のうちの2行目
> kashu_yomi, ←追加
が問題点。
ここを「テーブル名.列名で記述しなされ」だったのです。

具体的に書くとselectの列挙を
ti2.tie_up as tie_up2
kashu_yomi.kashu_yomi, ←追加
ky2.kashu_yomi as kashu_yomi2 ←追加
です。


提示されていなかったkashu_yomi のテーブル構成が
kashu_yomi.kashu_yomi なんでしょ。

テーブル名と列名が等しい状態に加え、エイリアスky2まで存在するので
「selectしろ」と記述がある「kashu_yomi」はDBエンジンからすると
・kashu_yomi.kashu_yomiなのか
・ky2.kashu_yomi(=3行目と同じものをあえて2行目に書きたい可能性)なのか
・kashu_yomi.*なのか
分からないでしょ?ということ。

得てして、質問者様が「不要と判断して掲載しない部分」にこそ
問題があることが多いですよ。

#他の回答者さんにフォローいただいたとおり
#「そのもの」をコピペしないと意味がない。
#追加したテーブル構成の提示が無い。
#そもそもが、エラーメッセージ内容が無い。
    • good
    • 0

実際のSQL文と,その実行の際に表示されたエラーメッセージを,そのまま提示していただけますか。



> このサイトに入力する際のタイプミスです。(回答No.1への補足)

タイプし直すのではなく,実際のSQLコードをそのままcopy&pasteで提示してください。
    • good
    • 0

回答No.2への補足を読みました。

質問者は回答者の指示を読み間違っています。

> kashu_yomi, ←追加
> ky2.kashu_yomi as kashu_yomi2 ←追加

のように登場する上の追加行は,現状のままでは,kashu_yomi表のkashu_yomi列なのか,ky2表のkashu_yomi列なのか一意に特定できないと指摘しているのです。

回答No.2への補足でおこなった変更を元に戻し,上記の追加行を kashu_yomi.kashu_yomi, のように修正してください。

この回答への補足

ご指摘の箇所を修正しましたが、依然動きません。

kashu
+----------------+-------------------+------------------+
| kashu_ID   | kashu      | kashu_yomi   |
+----------------+-------------------+------------------+
| 0       | KOTOKO     | コトコ     |
+----------------+-------------------+------------------+
| 1       | AKI       | アキ      |
+----------------+-------------------+------------------+

補足日時:2013/07/14 08:56
    • good
    • 0

では、selectで列挙されてる


> kashu_yomi, ←追加
の元テーブルは kashu_yomi と推測できるが

fromのテーブル群では
> left JOIN kashu_yomi ON song.kashu_1_ID = kashu.kashu_ID) ←追加
> left JOIN kashu_yomi ky2 ON song.kashu_2_ID = ky2.kashu_ID) ←追加
の2回登場している。
他の列と同様に、テーブル名.列名と記述しなされ。

この回答への補足

回答ありがとうございます。
下記のように、テーブル名.列名としましたがダメでした。
left JOIN kashu.kashu_yomi ON song.kashu_1_ID = kashu.kashu_ID) ←追加
left JOIN kashu.kashu_yomi ky2 ON song.kashu_2_ID = ky2.kashu_ID) ←追加

補足日時:2013/07/13 22:07
    • good
    • 0

そりゃ動かないでしょ。



select 列挙の
> ti2.tie_up as tie_up2
> kashu_yomi, ←追加
で、tie_up2 の後ろにカンマが無い。

この回答への補足

それは、このサイトに入力する際のタイプミスです。
実際に動かしているsql文には、ちゃんとカンマが有りますが、
動きません。

補足日時:2013/07/13 18:00
    • good
    • 0

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

関連するカテゴリからQ&Aを探す