find_by_sql and join

hi

I amd tanizawa.

I had problem.

I can not get main.name value from below sql.

“find_by_sql ‘select main.id,main.name,sub.name from main left join sub on sub.id = main.id’”

Please teach me how to get borth name value.

My first question would be why are you using find_by_sql? Why not use
the normal rails ActiveRecord methods. See
http://guides.rubyonrails.org/active_record_querying.html
and
http://guides.rubyonrails.org/association_basics.html

I assume you have already worked through the getting started guide and
some tutorials such as railstutorial.org which is free to use online.

Colin

I almost use normal ActiveRecord methods.

I use find_by_sql for complected sql.

2012年6月30日土曜日 18時17分48秒 UTC+9 Colin Law:

I almost use normal ActiveRecord methods.
I use find_by_sql for complected sql.

Why are you joining main.id on sub.id? Normally that would be
considered poor database design. It would be usual to use a has_one
belongs_to relationship, then you could use an ActiveRecord query.
Also your table names should be plural to follow the Rails
conventions.

By the way, please don't top post, it makes it difficult to follow the
thread. Insert your reply inline. Thanks.

Colin

Activerecord can't tell the difference between the 2 name columns -
you need to give them distinct names e.g.

select main.id,main.name,sub.name as sub_name from main ...

Fred