Thread View: pl.comp.lang.ruby
5 messages
5 total messages
Started by Maciej Piechotka
Sat, 05 Jan 2008 18:12
ORM i subquering
Author: Maciej Piechotka
Date: Sat, 05 Jan 2008 18:12
Date: Sat, 05 Jan 2008 18:12
23 lines
1805 bytes
1805 bytes
Mam takie proste pytanie (zastanawiam się nad wyborem ORM):
Jak w różnych ORM wygląda takie zapytanie(to jest przykład z którym na
razie 'walczę' potem będą trudniejsze[1]):
SELECT * FROM users WHERE id IN (SELECT user_id FROM posts WHERE priority
>= 4);
Oczywiście nie chodzi mi o find_by_sql(...) w AR czy DB[...] w Sequel
(chcę jak najbardziej uniknąć pisania kodu w SQL - łatwiej się IMHO
pomylić),
[1] Nowe rzeczy poznaje na prostych przykładach w irb a nie na kodzie ;)
PS.
W Sequelu odkryłem ;):
User.filter(:id => Post.filter{:priority >= 4}.select(:user_id))
Czy da się coś takiego zrobić w DataMapper? Albo w AR (nie sądzę ale to by
było najlepsze)?
Nie chodzi mi oczywiście o przepychanie wszystkiego poprzez tablice w
railsach.
--
I've probably left my head... somewhere. Please wait untill I find it.
Homepage (pl_PL): http://uzytkownik.jogger.pl/
(GNU/)Linux User: #425935 (see http://counter.li.org/)
Re: ORM i subquering
Author: Jaroslaw Zabiello
Date: Sun, 06 Jan 2008 02:41
Date: Sun, 06 Jan 2008 02:41
25 lines
1546 bytes
1546 bytes
On Sat, 05 Jan 2008 18:12:47 -0000, Maciej Piechotka
<uzytkownik2@gmail.com> wrote:
> [1] Nowe rzeczy poznaje na prostych przykładach w irb a nie na kodzie ;)
Na http://code.google.com/p/ruby-sequel/ po prawej "Featured Wiki Pages:"
i tam są linki do dużej ilości przykładów.
> W Sequelu odkryłem ;):
> User.filter(:id => Post.filter{:priority >= 4}.select(:user_id))
Aby było "id IN(SELECT..." a nie "...id=(SELECT...", musisz wstawić [].
Można to też budować w kawałkach:
sub = Post.select(:user_id).filter{:priority >=4}
User.filter(:id => [sub])
> Czy da się coś takiego zrobić w DataMapper? Albo w AR
Nie sądzę. Ale możesz popytać się na #datamapper.
--
Jarosław Zabiełło
http://blog.zabiello.com
irc://irc.eu.freenode.net/rubyonrails.pl
Re: ORM i subquering
Author: Maciej Piechotka
Date: Sun, 06 Jan 2008 09:46
Date: Sun, 06 Jan 2008 09:46
19 lines
1589 bytes
1589 bytes
On Sun, 06 Jan 2008 02:41:48 +0000, Jaroslaw Zabiello wrote:
> Aby było "id IN(SELECT..." a nie "...id=(SELECT...", musisz wstawić [].
> Można to też budować w kawałkach:
>
> sub = Post.select(:user_id).filter{:priority >=4} User.filter(:id =>
> [sub])
Jesteś pewien? Mi działa bez:
irb> User.filter(:id => Post.filter{:priority >= 4}.select(:user_id)).sql
=> "SELECT * FROM users WHERE (id IN (SELECT user_id FROM posts WHERE
(priority >= 4)))"
Pozdrawiam
--
I've probably left my head... somewhere. Please wait untill I find it.
Homepage (pl_PL): http://uzytkownik.jogger.pl/
(GNU/)Linux User: #425935 (see http://counter.li.org/)
Re: ORM i subquering
Author: Jaroslaw Zabiello
Date: Sun, 06 Jan 2008 15:16
Date: Sun, 06 Jan 2008 15:16
15 lines
1280 bytes
1280 bytes
On Sun, 06 Jan 2008 09:46:43 -0000, Maciej Piechotka
<uzytkownik2@gmail.com> wrote:
> Jesteś pewien? Mi działa bez:
>
> irb> User.filter(:id => Post.filter{:priority >= 4}.select(:user_id)).sql
> => "SELECT * FROM users WHERE (id IN (SELECT user_id FROM posts WHERE
> (priority >= 4)))"
Hmm, faktycznie. Coś musiałem zamieszać, że mi wyskoczyło bez.
--
Jarosław Zabiełło
http://blog.zabiello.com
irc://irc.eu.freenode.net/rubyonrails.pl
[OT] Re: ORM i subquering
Author: Maciej Piechotka
Date: Sun, 06 Jan 2008 17:47
Date: Sun, 06 Jan 2008 17:47
22 lines
1826 bytes
1826 bytes
On Sun, 06 Jan 2008 15:16:10 +0000, Jaroslaw Zabiello wrote:
> On Sun, 06 Jan 2008 09:46:43 -0000, Maciej Piechotka
> <uzytkownik2@gmail.com> wrote:
>
>> Jesteś pewien? Mi działa bez:
>>
>> irb> User.filter(:id => Post.filter{:priority >=
>> 4}.select(:user_id)).sql => "SELECT * FROM users WHERE (id IN (SELECT
>> user_id FROM posts WHERE (priority >= 4)))"
>
> Hmm, faktycznie. Coś musiałem zamieszać, że mi wyskoczyło bez.
W idealnych komputerach nie da się mieć generatora lidzb losowych, w
prawdziwych to dowolne uruchomienie programu jest takim ;)
Pozdrawiam
PS. Oczywiście nie chodzi mi o pseudolosowe
--
I've probably left my head... somewhere. Please wait untill I find it.
Homepage (pl_PL): http://uzytkownik.jogger.pl/
(GNU/)Linux User: #425935 (see http://counter.li.org/)
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads