105 lines
2.2 KiB
SQL
105 lines
2.2 KiB
SQL
# name: test/sql/join/inner/test_join.test
|
|
# description: Test basic joins of tables
|
|
# group: [inner]
|
|
|
|
statement ok
|
|
PRAGMA enable_verification
|
|
|
|
statement ok
|
|
pragma verify_external
|
|
|
|
statement ok
|
|
CREATE TABLE test (a INTEGER, b INTEGER);
|
|
|
|
statement ok
|
|
INSERT INTO test VALUES (11, 1), (12, 2), (13, 3)
|
|
|
|
statement ok
|
|
CREATE TABLE test2 (b INTEGER, c INTEGER);
|
|
|
|
statement ok
|
|
INSERT INTO test2 VALUES (1, 10), (1, 20), (2, 30)
|
|
|
|
# simple cross product + join condition
|
|
query III
|
|
SELECT a, test.b, c FROM test, test2 WHERE test.b = test2.b ORDER BY c;
|
|
----
|
|
11 1 10
|
|
11 1 20
|
|
12 2 30
|
|
|
|
# ambiguous reference to column
|
|
statement error
|
|
SELECT b FROM test, test2 WHERE test.b > test2.b;
|
|
----
|
|
|
|
# simple cross product + multiple join conditions
|
|
query III
|
|
SELECT a, test.b, c FROM test, test2 WHERE test.b=test2.b AND test.a-1=test2.c
|
|
----
|
|
11 1 10
|
|
|
|
# use join columns in subquery
|
|
query III
|
|
SELECT a, (SELECT test.a), c FROM test, test2 WHERE test.b = test2.b ORDER BY c;
|
|
----
|
|
11 11 10
|
|
11 11 20
|
|
12 12 30
|
|
|
|
# explicit join
|
|
query III
|
|
SELECT a, test.b, c FROM test INNER JOIN test2 ON test.b = test2.b ORDER BY c;
|
|
----
|
|
11 1 10
|
|
11 1 20
|
|
12 2 30
|
|
|
|
# explicit join with condition the wrong way around
|
|
query III
|
|
SELECT a, test.b, c FROM test INNER JOIN test2 ON test2.b = test.b ORDER BY c;
|
|
----
|
|
11 1 10
|
|
11 1 20
|
|
12 2 30
|
|
|
|
# explicit join with additional condition that is no left-right comparison
|
|
query III
|
|
SELECT a, test.b, c FROM test INNER JOIN test2 ON test2.b = test.b and test.b = 2;
|
|
----
|
|
12 2 30
|
|
|
|
# explicit join with additional condition that is constant
|
|
query III
|
|
SELECT a, test.b, c FROM test INNER JOIN test2 ON test2.b = test.b and 2 = 2 ORDER BY c;
|
|
----
|
|
11 1 10
|
|
11 1 20
|
|
12 2 30
|
|
|
|
# explicit join with only condition that is no left-right comparison
|
|
query III
|
|
SELECT a, test.b, c FROM test INNER JOIN test2 ON test.b = 2 ORDER BY c;
|
|
----
|
|
12 2 10
|
|
12 2 20
|
|
12 2 30
|
|
|
|
# explicit join with only condition that is constant
|
|
query III
|
|
SELECT a, test.b, c FROM test INNER JOIN test2 ON NULL = 2;
|
|
----
|
|
|
|
# equality join where both lhs and rhs keys are projected
|
|
query II
|
|
SELECT * FROM (VALUES (1)) tbl(i) JOIN (VALUES (1)) tbl2(j) ON (i=j);
|
|
----
|
|
1 1
|
|
|
|
# equality join where both lhs and rhs keys are projected with filter
|
|
query II
|
|
SELECT * FROM (VALUES (1), (2)) tbl(i) JOIN (VALUES (1), (2)) tbl2(j) ON (i=j) WHERE i+j=2;
|
|
----
|
|
1 1
|
|
|