- ベストアンサー
MySQLでのSQL文実行時のエラーの原因と解決方法
- MySQLでSQL文を実行した際にエラーが発生し、正常に動作しない状況が発生しました。
- エラーの原因は、追加した部分の文法ミスである可能性があります。
- 解決方法としては、追加した部分の文法を確認し、正しい書式に修正する必要があります。
- みんなの回答 (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 ←追加 と変更することも必要。
その他の回答 (5)
- bin-chan
- ベストアンサー率33% (1403/4213)
#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.*なのか 分からないでしょ?ということ。 得てして、質問者様が「不要と判断して掲載しない部分」にこそ 問題があることが多いですよ。 #他の回答者さんにフォローいただいたとおり #「そのもの」をコピペしないと意味がない。 #追加したテーブル構成の提示が無い。 #そもそもが、エラーメッセージ内容が無い。
- jjon-com
- ベストアンサー率61% (1599/2592)
実際のSQL文と,その実行の際に表示されたエラーメッセージを,そのまま提示していただけますか。 > このサイトに入力する際のタイプミスです。(回答No.1への補足) タイプし直すのではなく,実際のSQLコードをそのままcopy&pasteで提示してください。
- jjon-com
- ベストアンサー率61% (1599/2592)
回答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 | アキ | +----------------+-------------------+------------------+
- bin-chan
- ベストアンサー率33% (1403/4213)
では、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) ←追加
- bin-chan
- ベストアンサー率33% (1403/4213)
そりゃ動かないでしょ。 select 列挙の > ti2.tie_up as tie_up2 > kashu_yomi, ←追加 で、tie_up2 の後ろにカンマが無い。
補足
それは、このサイトに入力する際のタイプミスです。 実際に動かしているsql文には、ちゃんとカンマが有りますが、 動きません。
お礼
ありがとうございます。 無事動きました。