a INT | b INT |
---|---|
0 | 1 |
2 | 3 |
| a INT | b INT | c INT |
SELECT | |
a, c | |
FROM | |
T1, T2; |
SELECT | |
InnerResult.T1.a | |
FROM | |
(SELECT | |
T1.a, c | |
FROM | |
T1, T2) AS InnerResult | |
WHERE | |
InnerResult.T1.a = InnerResult.c; |
SELECT | |
InnerResult.a | |
FROM | |
(SELECT | |
T1.a, c | |
FROM | |
T1 JOIN T2 ON InnerResult.a = InnerResult.c | |
) AS InnerResult; |
SELECT | |
InnerResult[0] | |
FROM | |
(SELECT | |
T1[0], T2[2] | |
FROM | |
T1 JOIN T2 ON T1[0] = T2[2] | |
) AS InnerResult; |
SELECT * FROM a, b WHERE a.id = b.id; |
SELECT * FROM a INNER JOIN b ON a.id = b.id; |
SELECT c_balance, c_first, c_middle, c_id | |
FROM customer | |
WHERE c_last=? AND c_d_id=? AND c_w_id=? | |
ORDER BY c_first; |
auto gt_customer = std::make_shared<opossum::GetTable>("CUSTOMER"); | |
auto validate = std::make_shared<opossum::Validate>(gt_customer); | |
auto first_filter = std::make_shared<opossum::TableScan>(validate, opossum::ColumnID{5} /* "C_LAST" */, | |
opossum::ScanType::OpEquals, c_last); | |
auto second_filter = std::make_shared<opossum::TableScan>(first_filter, opossum::ColumnID{1} /* "C_D_ID" */, | |
opossum::ScanType::OpEquals, c_d_id); | |
auto third_filter = std::make_shared<opossum::TableScan>(second_filter, opossum::ColumnID{2} /* "C_W_ID" */, |
-- In the inner query | |
-- * c needs to be resolved to ”T2”, but could also be referred by ”T2.c” | |
-- * T1.a needs to have the prefix, because ”T2” also contains a column ”a” | |
-- * The first output column is nevertheless named “a” and not “T1.a” | |
-- In the outer query, the ”InnerResult” prefix is, again, optional, but | |
-- the subquery needs to have an alias | |
SELECT | |
InnerResult.a | |
FROM | |
(SELECT |