Forum: Ruby on Rails find_by_sql and join

604992ee4179344f9a3e4388b59cf401?d=identicon&s=25 tanizawa (Guest)
on 2012-06-30 11:09
(Received via mailing list)
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.
5f94b9b346c2aa648a80bc259978e5bc?d=identicon&s=25 Colin Law (Guest)
on 2012-06-30 11:19
(Received via mailing list)
On 30 June 2012 10:08, tanizawa <kazuyat7175@gmail.com> wrote:
> 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
604992ee4179344f9a3e4388b59cf401?d=identicon&s=25 tanizawa (Guest)
on 2012-06-30 15:38
(Received via mailing list)
I almost use normal ActiveRecord methods.
I use find_by_sql for complected sql.

2012$BG/(B6$B7n(B30$BF|EZMKF|(B 18$B;~(B17$BJ,(B48$BIC(B UTC+9 Colin
Law:
5f94b9b346c2aa648a80bc259978e5bc?d=identicon&s=25 Colin Law (Guest)
on 2012-06-30 16:35
(Received via mailing list)
On 30 June 2012 14:37, tanizawa <kazuyat7175@gmail.com> wrote:
> 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
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2012-07-01 13:40
(Received via mailing list)
On Jun 30, 10:08am, tanizawa <kazuyat7...@gmail.com> wrote:
> 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.

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
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.