Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.25 KB | None | 0 0
  1. require 'pg'
  2. db = PG.connect dbname: 'josh_testing'
  3. db.exec(<<~SQL).to_a
  4. drop table if exists lefts cascade;
  5. drop table if exists rights cascade;
  6. create table lefts (
  7. id serial primary key,
  8. val text
  9. );
  10. create table rights(
  11. id serial primary key,
  12. left_id integer references lefts (id),
  13. val text,
  14. is_relevant boolean
  15. );
  16. insert into lefts (val) values ('la'), ('lb'), ('lc');
  17. insert into rights (left_id, val, is_relevant)
  18. values (1, 'ra', true), (2, 'rb', false);
  19. SQL
  20.  
  21. # With the condition (is_relevant) on the join clause
  22. db.exec(<<~SQL).to_a
  23. select lefts.id lid, rights.id rid, lefts.val lval, rights.val rval
  24. from lefts
  25. left outer join rights on lefts.id = rights.left_id and is_relevant
  26. SQL
  27. # => [{"lid"=>"1", "rid"=>"1", "lval"=>"la", "rval"=>"ra"},
  28. # {"lid"=>"2", "rid"=>nil, "lval"=>"lb", "rval"=>nil},
  29. # {"lid"=>"3", "rid"=>nil, "lval"=>"lc", "rval"=>nil}]
  30.  
  31. # With the condition in a where clause
  32. db.exec(<<~SQL).to_a
  33. select lefts.id lid, rights.id rid, lefts.val lval, rights.val rval
  34. from lefts
  35. left outer join rights on lefts.id = rights.left_id
  36. where is_relevant
  37. SQL
  38. # => [{"lid"=>"1", "rid"=>"1", "lval"=>"la", "rval"=>"ra"}]
  39.  
  40. # !> NOTICE: drop cascades to constraint rights_left_id_fkey on table rights
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement