Not so easy. If DBMS can't find records in joined table, it returns NULLs:
test=# SELECT * FROM table1 LEFT JOIN table2 ON
table2.table1_id=table1.idAND table2.user_id=123;
 id | table1_id | user_id
----+-----------+---------
  1 |         1 |     123
  2 |           |
  3 |         3 |     123
  4 |           |
  5 |           |
(5 rows)

but your code will return only:

test=# SELECT * FROM table1 LEFT JOIN table2 ON
table2.table1_id=table1.idWHERE table2.user_id=123;
 id | table1_id | user_id
----+-----------+---------
  1 |         1 |     123
  3 |         3 |     123
(2 rows)

test=#


On Fri, May 29, 2009 at 8:50 PM, Moritz Onken <on...@houseofdesign.de>wrote:

>
> Am 29.05.2009 um 16:50 schrieb Андрей Костенко:
>
>  Has I can write in DBIx::Class this query:
>>
>> SELECT * FROM table1 LEFT JOIN table2 ON table2.table1_id=table2.id AND
>> table2.user_id=123?
>>
>> Where user_id is an any random number.
>>
>
> Depends on your schema.
>
>
> I'd say this is equivalent to:
>
>  SELECT * FROM table1 LEFT JOIN table2 ON table2.table1_id=table2.id WHERE
>> table2.user_id=123
>>
>
>
> Could be
>
> $rs->search({ 'table2.user_id' => 123}, { prefetch => 'table2' });
>
> cheers,
>
> moritz
>
>
> _______________________________________________
> List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
> IRC: irc.perl.org#dbix-class
> SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
> Searchable Archive:
> http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk
>
_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk

Reply via email to