竹形先生 こんにちは。
「webアプリケーション構築入門」
先生のご助力もありまして、もう少しで読破というところまで読み進める事が出来ました。
最後の方でまたどうしても理解出来ない箇所がありましたので、質問させていただきます。
p457およびp458にありますloadTopicsまたはloadCommentsメソッドの所です。
SQL分に
"SELECT *,user.real_name FROM topic"
という記述があるのですが、LEFT JOIN を行った後に表示させるカラムが「*」とuser.real_nameになっているのはどういう意図があるのでしょうか?
表示されるカラムに「*」が指定されているのであれば、user.real_nameを指定する必要はないのでは? と思ってしまうのですが。
ご回答をお待ちしております。
「webアプリケーション構築入門」
先生のご助力もありまして、もう少しで読破というところまで読み進める事が出来ました。
最後の方でまたどうしても理解出来ない箇所がありましたので、質問させていただきます。
p457およびp458にありますloadTopicsまたはloadCommentsメソッドの所です。
SQL分に
"SELECT *,user.real_name FROM topic"
という記述があるのですが、LEFT JOIN を行った後に表示させるカラムが「*」とuser.real_nameになっているのはどういう意図があるのでしょうか?
表示されるカラムに「*」が指定されているのであれば、user.real_nameを指定する必要はないのでは? と思ってしまうのですが。
ご回答をお待ちしております。
投稿:じょん[atp]/2011年 09月 21日 16時 42分
/更新:2011年 09月 21日 16時 42分
RE:java mysql tomcat で始めるwebアプリケーション構築入門p458について
by 竹形 誠司[takegata]
竹形です。どうも。
一般論で言いますと、AとBのテーブルをJOINする場合、AとBに
同じ名前のカラムが存在する可能性があり、テーブル名を
指定しないとエラーになってしまうことがあります。
ご質問のケースがどうだったか今すぐ試せないのですが、
テーブル名を削除して試してみてください。エラーにならなければ
テーブル名は指定しなくても大丈夫です。
一般論で言いますと、AとBのテーブルをJOINする場合、AとBに
同じ名前のカラムが存在する可能性があり、テーブル名を
指定しないとエラーになってしまうことがあります。
ご質問のケースがどうだったか今すぐ試せないのですが、
テーブル名を削除して試してみてください。エラーにならなければ
テーブル名は指定しなくても大丈夫です。
投稿:竹形 誠司[takegata]/2011年 09月 21日 16時 50分
/更新:2011年 09月 21日 16時 50分
竹形です。どうも、
質問の主旨を読み違えていました、すみません。
*,user.real_name の部分は、topicテーブルの全てのカラムとuserテーブルのreal_nameカラムをリザルトセットに含めるという意味です。nextメソッドの中でgetString("real_name")を実行すると、userテーブルのreal_nameカラムから文字列を取得しますが、SELECT文でuser.real_nameを指定しておかないとここでエラーになってしまいます。
疑問に思ったときはコードを削って何が起こるか試してみることをおすすめします。
質問の主旨を読み違えていました、すみません。
*,user.real_name の部分は、topicテーブルの全てのカラムとuserテーブルのreal_nameカラムをリザルトセットに含めるという意味です。nextメソッドの中でgetString("real_name")を実行すると、userテーブルのreal_nameカラムから文字列を取得しますが、SELECT文でuser.real_nameを指定しておかないとここでエラーになってしまいます。
疑問に思ったときはコードを削って何が起こるか試してみることをおすすめします。
投稿:竹形 誠司[takegata]/2011年 09月 23日 09時 17分
/更新:2011年 09月 23日 09時 19分