Friday, December 18, 2009

[Rails] Re: SQL query problem

On Dec 18, 12:10 am, Ease Bus <ease...@gmail.com> wrote:
> Please help me with finding a SQL select statement for the following  
> problems.
>
> I have two classes: Site and Link
>
> Table Link has two columns: linking_site_id, and linked_site_id
>
> I would like to find all the links in table Link where linking_site_id  
> = 3 or linked_site_id = 3 but only include a link where linked_site_id  
> = 3 if the linking_site_id in that link is not one of the  
> linked_site_id that site 3 links to.  For example, if the Link table  
> contains the following rows
>
> Linking_site            Linked_site
> 2                               1
> 3                               2
> 3                               4
> 5                               3
> 2                               3
>
> What SQL select statement would return only the following:
>
> 3                               2
> 3                               4
> 5                               3
>
> If SQL query alone cannot do this, what is the most efficient way to  
> do it via RoR?  Thanks.

Probably not the most efficient, but this will do what you're looking
for:

linking_sites = Link.find_by_linked_site_id(3).map { |l|
l.linking_site_id }
result = Link.find(:all, :conditions => ['linking_site_id = :base OR
(linked_site_id = :base AND linking_site_id NOT IN (:sites)', { :base
=> 3, :sites => linking_sites })

It has the advantage of being fairly close to the original text
description as well, so when you see it again in a year you'll know
what it does... :)

--Matt Jones

--

You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate