Forum: Ruby on Rails Join query in rails

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
3083ca8f0496edaac2fa10c20630d0bc?d=identicon&s=25 Newb Newb (newb)
on 2009-04-09 12:40
Hi..
how i should write the below query in rails.i found through mysql
tutorial.i m not pro in rails ..so give some lights....

SELECT * FROM contactinfo join userinfo on contactinfo.contact_id =
userinfo.id where contactinfo.user_id = 25

Thanks in advance
5772c599ccab3081e0fffb1d54f3b6de?d=identicon&s=25 Andrew Timberlake (andrewtimberlake)
on 2009-04-09 13:08
(Received via mailing list)
On Thu, Apr 9, 2009 at 12:40 PM, Newb Newb
<rails-mailing-list@andreas-s.net> wrote:
>
> Hi..
> how i should write the below query in rails.i found through mysql
> tutorial.i m not pro in rails ..so give some lights....
>
> SELECT * FROM contactinfo join userinfo on contactinfo.contact_id =
> userinfo.id where contactinfo.user_id = 25
>
> Thanks in advance

It would all depend on the models you're using.
That db schema is not technically Rails friendly in that the table
names should be user_infos and contact_infos resulting in models named
UserInfo and ContactInfo
Then you could use the following:

model ContactInfo
  has_one :user_info
  #or has_many :user_infos
end

model UserInfo
  belongs_to :contact_info
end

and then...

contact_info = ContactInfo.new 25
user_info = contact_info.user_info

Rails deals with all the sql in the background :-)

Andrew Timberlake
http://ramblingsonrails.com
http://www.linkedin.com/in/andrewtimberlake

"I have never let my schooling interfere with my education" - Mark Twain
0348be81e22f24afdaa6e4f137aa9dfc?d=identicon&s=25 Priya Buvan (priyadharsini)
on 2009-04-09 13:08
Newb Newb wrote:
> Hi..
> how i should write the below query in rails.i found through mysql
> tutorial.i m not pro in rails ..so give some lights....
>
> SELECT * FROM contactinfo join userinfo on contactinfo.contact_id =
> userinfo.id where contactinfo.user_id = 25
>
> Thanks in advance

@contactinfo= Contactinfo.find(:all, :joins => "contactinfos inner join
userinfos as u on contactinfos.contact_id=u.id", :conditions =>
["contactinfos.contact_id =?", 25])
3083ca8f0496edaac2fa10c20630d0bc?d=identicon&s=25 Newb Newb (newb)
on 2009-04-09 15:14
Priya Buvan wrote:
> Newb Newb wrote:
>> Hi..
>> how i should write the below query in rails.i found through mysql
>> tutorial.i m not pro in rails ..so give some lights....
>>
>> SELECT * FROM contactinfo join userinfo on contactinfo.contact_id =
>> userinfo.id where contactinfo.user_id = 25
>>
>> Thanks in advance
>
> @contactinfo= Contactinfo.find(:all, :joins => "contactinfos inner join
> userinfos as u on contactinfos.contact_id=u.id", :conditions =>
> ["contactinfos.contact_id =?", 25])

Thanks for the reply..
using this query i can able to get only the contactinfo table fields but
i want to get userinfo table fields as well as contactinfo fields
also...

how can i get that..
pls guide me on this
5772c599ccab3081e0fffb1d54f3b6de?d=identicon&s=25 Andrew Timberlake (andrewtimberlake)
on 2009-04-09 15:21
(Received via mailing list)
On Thu, Apr 9, 2009 at 3:14 PM, Newb Newb
<rails-mailing-list@andreas-s.net> wrote:
>>> Thanks in advance
> how can i get that..
> pls guide me on this
> --

Don't think of merging them into one result set, think of them as two
seperate sets of data (or models) that are related.
That's the way Rails treats the data and it works very well.

I understand that you're new to Rails but take some time to get to
understand Rails way of doing things and your life will be much
easier.

Andrew Timberlake
http://ramblingsonrails.com
http://www.linkedin.com/in/andrewtimberlake

"I have never let my schooling interfere with my education" - Mark Twain
81ad4b2c219e5f8f9a952e4dddc675db?d=identicon&s=25 Lakshmi Narayana (Guest)
on 2009-04-10 09:28
(Received via mailing list)
i think this is the way you should write like this... as i am also new
to
rails

ContactInfo.find(:all, :join => user_info)

On Thu, Apr 9, 2009 at 4:10 PM, Newb Newb
0348be81e22f24afdaa6e4f137aa9dfc?d=identicon&s=25 Priya Buvan (priyadharsini)
on 2009-04-10 10:41
 You can use :select option in the same query..
3083ca8f0496edaac2fa10c20630d0bc?d=identicon&s=25 Newb Newb (newb)
on 2009-04-10 10:52
Priya Buvan wrote:
>
>  You can use :select option in the same query..

yes priya i used but i get error ...it gives me unknown column

could you give the sample

@contactinfo= ContactInfo.find(:all,:select =>
"userinfo.first_name,contactinfo.user_id", :joins => "contactinf inner
join
userinfo as u on contactinfo.contact_id=u.id", :conditions =>
["contactinfo.user_id=?", 25])

pls help me ya

Thanks
F193e52d0a812b1429d51412bee21cdc?d=identicon&s=25 gundestrup (Guest)
on 2009-04-10 11:46
(Received via mailing list)
why don't you use the build options in the framework?
specify the joins / relations in the model.
Then do
@user = User.find(params[:id]) (controller)

View:
<=% @user.contactinfo.telephone %>

or
<% for user in @users do |t| %>
<%= t.contactinfo.telefone %>
<%= t.contactinfo.fax %>

If you cant to do other types of joins, use the include option in the
controller.

On Apr 10, 10:52 am, Newb Newb <rails-mailing-l...@andreas-s.net>
This topic is locked and can not be replied to.