joins.td 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  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 MATERIALIZED VIEW test1 AS
  14. SELECT * FROM names JOIN mods USING (num);
  15. > SELECT * FROM test1;
  16. num name mod
  17. ------------
  18. 1 one odd
  19. 2 two even
  20. > CREATE MATERIALIZED VIEW test2 (names_num, names_name, mods_num, mods_mod) AS
  21. SELECT * FROM names JOIN mods ON names.num = mods.num;
  22. > SELECT * FROM test2;
  23. names_num names_name mods_num mods_mod
  24. --------------------------------------
  25. 1 one 1 odd
  26. 2 two 2 even
  27. > CREATE MATERIALIZED VIEW test3 (names_num, names_name, mods_num, mods_mod) AS
  28. SELECT * FROM names, mods WHERE names.num = mods.num;
  29. > SELECT * FROM test3;
  30. names_num names_name mods_num mods_mod
  31. --------------------------------------
  32. 1 one 1 odd
  33. 2 two 2 even
  34. > CREATE MATERIALIZED VIEW test4 (names_num, names_name, mods_num, mods_mod) AS
  35. SELECT * FROM names, mods WHERE names.num = mods.num AND mods.mod = 'even';
  36. > SELECT * FROM test4;
  37. names_num names_name mods_num mods_mod
  38. --------------------------------------
  39. 2 two 2 even
  40. > CREATE MATERIALIZED VIEW test5 (names_num, names_name, mods_num, mods_mod) AS
  41. SELECT * FROM names LEFT JOIN mods ON names.num = mods.num;
  42. > SELECT * FROM test5;
  43. names_num names_name mods_num mods_mod
  44. --------------------------------------
  45. 1 one 1 odd
  46. 2 two 2 even
  47. 3 three <null> <null>
  48. > CREATE MATERIALIZED VIEW test6 (names_num, names_name, mods_num, mods_mod) AS
  49. SELECT * FROM names RIGHT JOIN mods ON names.num = mods.num;
  50. > SELECT * FROM test6;
  51. names_num names_name mods_num mods_mod
  52. --------------------------------------
  53. <null> <null> 0 even
  54. 1 one 1 odd
  55. 2 two 2 even
  56. > CREATE MATERIALIZED VIEW test7 (names_num, names_name, mods_num, mods_mod) AS
  57. SELECT * FROM names, mods WHERE names.num = mods.num AND mods.mod = 'even';
  58. > SELECT * FROM test7;
  59. names_num names_name mods_num mods_mod
  60. --------------------------------------
  61. 2 two 2 even
  62. > CREATE MATERIALIZED VIEW test8 AS
  63. SELECT mods.* FROM names, mods WHERE names.num = mods.num AND mods.mod = 'even';
  64. > SELECT * FROM test8;
  65. num mod
  66. -------
  67. 2 even
  68. > CREATE MATERIALIZED VIEW test9 AS
  69. SELECT foo.mod, foo.num, bar.name FROM names as bar, mods as foo
  70. WHERE bar.num = foo.num AND foo.mod = 'even';
  71. > SELECT * FROM test9;
  72. mod num name
  73. ------------
  74. even 2 two
  75. > CREATE MATERIALIZED VIEW test10 (names_num, names_name, mods_num, mods_mod) AS
  76. SELECT * FROM names, mods;
  77. > SELECT * FROM test10;
  78. names_num names_name mods_num mods_mod
  79. --------------------------------------
  80. 1 one 0 even
  81. 1 one 1 odd
  82. 1 one 2 even
  83. 2 two 0 even
  84. 2 two 1 odd
  85. 2 two 2 even
  86. 3 three 0 even
  87. 3 three 1 odd
  88. 3 three 2 even
  89. > CREATE MATERIALIZED VIEW test11 (names_num, names_name, mods_num, mods_mod) AS
  90. SELECT * FROM names CROSS JOIN mods;
  91. > SELECT * FROM test11;
  92. names_num names_name mods_num mods_mod
  93. --------------------------------------
  94. 1 one 0 even
  95. 1 one 1 odd
  96. 1 one 2 even
  97. 2 two 0 even
  98. 2 two 1 odd
  99. 2 two 2 even
  100. 3 three 0 even
  101. 3 three 1 odd
  102. 3 three 2 even
  103. > CREATE MATERIALIZED VIEW test12 (names_num, names_name, mods_num, mods_mod) AS
  104. SELECT * FROM names LEFT JOIN mods ON 1 = 0;
  105. > SELECT * FROM test12;
  106. names_num names_name mods_num mods_mod
  107. --------------------------------------
  108. 1 one <null> <null>
  109. 2 two <null> <null>
  110. 3 three <null> <null>
  111. > CREATE MATERIALIZED VIEW test13 (names_num, names_name, mods_num, mods_mod) AS
  112. SELECT * FROM names RIGHT JOIN mods ON 1 = 0;
  113. > SELECT * FROM test13;
  114. names_num names_name mods_num mods_mod
  115. --------------------------------------
  116. <null> <null> 0 even
  117. <null> <null> 1 odd
  118. <null> <null> 2 even
  119. > CREATE MATERIALIZED VIEW test14 (names_num, names_name, mods_num, mods_mod) AS
  120. SELECT * FROM names FULL OUTER JOIN mods ON 1 = 0;
  121. > SELECT * FROM test14;
  122. names_num names_name mods_num mods_mod
  123. --------------------------------------
  124. 1 one <null> <null>
  125. 2 two <null> <null>
  126. 3 three <null> <null>
  127. <null> <null> 0 even
  128. <null> <null> 1 odd
  129. <null> <null> 2 even