multijoins.td 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. # Copyright Materialize, Inc. and contributors. All rights reserved.
  2. #
  3. # Use of this software is governed by the Business Source License
  4. # included in the LICENSE file at the root of this repository.
  5. #
  6. # As of the Change Date specified in that file, in accordance with
  7. # the Business Source License, use of this software will be governed
  8. # by the Apache License, Version 2.0.
  9. > CREATE TABLE names (num bigint, name text)
  10. > INSERT INTO names VALUES (1, 'one'), (2, 'two'), (3, 'three')
  11. > CREATE TABLE mods (num bigint, mod text)
  12. > INSERT INTO mods VALUES (0, 'even'), (1, 'odd'), (2, 'even')
  13. > CREATE TABLE plurals (num text, noun text)
  14. > INSERT INTO plurals VALUES ('one', 'sheep'), ('two', 'sheep'), ('one', 'mouse'), ('two', 'meeses')
  15. > CREATE MATERIALIZED VIEW test1 (names_num, names_name, mods_num, mods_mod, nouns_num, nouns_noun) AS
  16. SELECT * FROM names, mods, plurals WHERE names.num = mods.num AND names.name = plurals.num;
  17. > SELECT * FROM test1;
  18. names_num names_name mods_num mods_mod nouns_num nouns_noun
  19. -----------------------------------------------------------
  20. 1 one 1 odd one sheep
  21. 1 one 1 odd one mouse
  22. 2 two 2 even two sheep
  23. 2 two 2 even two meeses
  24. > CREATE MATERIALIZED VIEW test2 (names_num, names_name, mods_num, mods_mod, plurals_num, plurals_noun) AS
  25. SELECT * FROM names, mods, plurals
  26. WHERE names.num = mods.num AND names.name = plurals.num AND plurals.num = 'one';
  27. > SELECT * FROM test2;
  28. names_num names_name mods_num mods_mod plurals_num plurals_noun
  29. ----------------------------------------------------------------
  30. 1 one 1 odd one sheep
  31. 1 one 1 odd one mouse
  32. > CREATE MATERIALIZED VIEW test3 (names_num, names_name, mods_num, mods_mod, plurals_num, plurals_noun) AS
  33. SELECT * FROM names
  34. RIGHT JOIN mods ON names.num = mods.num
  35. LEFT JOIN plurals ON names.name = plurals.num;
  36. > SELECT * FROM test3;
  37. names_num names_name mods_num mods_mod plurals_num plurals_noun
  38. ---------------------------------------------------------------
  39. <null> <null> 0 even <null> <null>
  40. 1 one 1 odd one sheep
  41. 1 one 1 odd one mouse
  42. 2 two 2 even two sheep
  43. 2 two 2 even two meeses
  44. > CREATE MATERIALIZED VIEW test4 (names_num, names_name, mods_num, mods_mod, plurals_num, plurals_noun) AS
  45. SELECT * FROM names, mods, plurals as foo
  46. WHERE names.num = mods.num AND names.name = foo.num AND foo.num = 'one';
  47. > SELECT * FROM test4;
  48. names_num names_name mods_num mods_mod plurals_num plurals_noun
  49. ---------------------------------------------------------------
  50. 1 one 1 odd one sheep
  51. 1 one 1 odd one mouse