# Join query in rails

**URL:** <https://www.ruby-forum.com/t/join-query-in-rails/165132>\
**Category:** Rails\
**Created:** [April 9, 2009, 12:40pm UTC](https://www.ruby-forum.com/t/join-query-in-rails/165132 "2009-04-09T12:40:43Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![newb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/2acd7d/32.png) [@newb](https://www.ruby-forum.com/u/newb)\
**Post date:** [April 9, 2009, 12:40pm UTC](https://www.ruby-forum.com/t/join-query-in-rails/165132/1 "2009-04-09T12:40:43Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![newb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/2acd7d/32.png) [@newb](https://www.ruby-forum.com/u/newb)\
**Post date:** [April 9, 2009, 1:08pm UTC](https://www.ruby-forum.com/t/join-query-in-rails/165132/2 "2009-04-09T13:08:31Z")

</div>

On Thu, Apr 9, 2009 at 12:40 PM, Newb N.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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 T.  
[http://ramblingsonrails.com](http://ramblingsonrails.com)  
[http://www.linkedin.com/in/andrewtimberlake](http://www.linkedin.com/in/andrewtimberlake)

“I have never let my schooling interfere with my education” - Mark Twain

---

<div class="post-metadata">

**Author:** ![newb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/2acd7d/32.png) [@newb](https://www.ruby-forum.com/u/newb)\
**Post date:** [April 9, 2009, 1:08pm UTC](https://www.ruby-forum.com/t/join-query-in-rails/165132/3 "2009-04-09T13:08:39Z")

</div>

Newb N. 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])

---

<div class="post-metadata">

**Author:** ![newb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/2acd7d/32.png) [@newb](https://www.ruby-forum.com/u/newb)\
**Post date:** [April 9, 2009, 3:14pm UTC](https://www.ruby-forum.com/t/join-query-in-rails/165132/4 "2009-04-09T15:14:30Z")

</div>

Priya B. wrote:

> Newb N. 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

---

<div class="post-metadata">

**Author:** ![newb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/2acd7d/32.png) [@newb](https://www.ruby-forum.com/u/newb)\
**Post date:** [April 10, 2009, 9:28am UTC](https://www.ruby-forum.com/t/join-query-in-rails/165132/5 "2009-04-10T09:28:58Z")

</div>

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 N.

---

<div class="post-metadata">

**Author:** ![newb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/2acd7d/32.png) [@newb](https://www.ruby-forum.com/u/newb)\
**Post date:** [April 10, 2009, 10:41am UTC](https://www.ruby-forum.com/t/join-query-in-rails/165132/6 "2009-04-10T10:41:41Z")

</div>

You can use :select option in the same query…

---

<div class="post-metadata">

**Author:** ![newb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/2acd7d/32.png) [@newb](https://www.ruby-forum.com/u/newb)\
**Post date:** [April 9, 2009, 3:21pm UTC](https://www.ruby-forum.com/t/join-query-in-rails/165132/7 "2009-04-09T15:21:48Z")

</div>

On Thu, Apr 9, 2009 at 3:14 PM, Newb N.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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 T.  
[http://ramblingsonrails.com](http://ramblingsonrails.com)  
[http://www.linkedin.com/in/andrewtimberlake](http://www.linkedin.com/in/andrewtimberlake)

“I have never let my schooling interfere with my education” - Mark Twain

---

<div class="post-metadata">

**Author:** ![newb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/2acd7d/32.png) [@newb](https://www.ruby-forum.com/u/newb)\
**Post date:** [April 10, 2009, 10:52am UTC](https://www.ruby-forum.com/t/join-query-in-rails/165132/8 "2009-04-10T10:52:41Z")

</div>

Priya B. 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

---

<div class="post-metadata">

**Author:** ![newb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/2acd7d/32.png) [@newb](https://www.ruby-forum.com/u/newb)\
**Post date:** [April 10, 2009, 11:46am UTC](https://www.ruby-forum.com/t/join-query-in-rails/165132/9 "2009-04-10T11:46:32Z")

</div>

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 N. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
