Am 29.05.2009 um 19:04 schrieb Андрей Костенко:
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.id AND 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.id WHERE table2.user_id=123;
id | table1_id | user_id
----+-----------+---------
1 | 1 | 123
3 | 3 | 123
(2 rows)
does
SELECT * FROM table1 LEFT JOIN table2 ON table2.table1_id=table1.id
WHERE table2.user_id=123 OR table2.user_id IS NULL;
fix this?
DBIC:
$rs->search(['table2.user_id' => 123, 'table2.user_id' => {'=' =>
undef}], { prefetch => 'table2' });
_______________________________________________
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/[email protected]