2009年6月19日金曜日

railsのfind_by_sqlでselect * ... join ... ってやるときちょっと注意

sql文を使ってデータベースからデータを取得するときに、

samples = Sample.find_by_sql(["select * from samples inner join others on samples.id = others.sample_id ...])

ってやると、joinする側とされる側に同じ名前のカラムがあると、うまくデータが取れないことがあるみたいです。
例えば2つのテーブルのカラムにidというカラムが含まれている場合、どっちのidなの?ってことで分からないみたいですね。
ちゃんと、samplesテーブルのデータですよということを明記して

select samples.* from samples inner join others ...

と取得するテーブル名を明記するようにしましょう。