Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'pg'
- db = PG.connect dbname: 'josh_testing'
- db.exec(<<~SQL).to_a
- drop table if exists lefts cascade;
- drop table if exists rights cascade;
- create table lefts (
- id serial primary key,
- val text
- );
- create table rights(
- id serial primary key,
- left_id integer references lefts (id),
- val text,
- is_relevant boolean
- );
- insert into lefts (val) values ('la'), ('lb'), ('lc');
- insert into rights (left_id, val, is_relevant)
- values (1, 'ra', true), (2, 'rb', false);
- SQL
- # With the condition (is_relevant) on the join clause
- db.exec(<<~SQL).to_a
- select lefts.id lid, rights.id rid, lefts.val lval, rights.val rval
- from lefts
- left outer join rights on lefts.id = rights.left_id and is_relevant
- SQL
- # => [{"lid"=>"1", "rid"=>"1", "lval"=>"la", "rval"=>"ra"},
- # {"lid"=>"2", "rid"=>nil, "lval"=>"lb", "rval"=>nil},
- # {"lid"=>"3", "rid"=>nil, "lval"=>"lc", "rval"=>nil}]
- # With the condition in a where clause
- db.exec(<<~SQL).to_a
- select lefts.id lid, rights.id rid, lefts.val lval, rights.val rval
- from lefts
- left outer join rights on lefts.id = rights.left_id
- where is_relevant
- SQL
- # => [{"lid"=>"1", "rid"=>"1", "lval"=>"la", "rval"=>"ra"}]
- # !> NOTICE: drop cascades to constraint rights_left_id_fkey on table rights
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement