sql - 如何从多表创建投影
问题描述
我有2个表如下:
CREATE TABLE public.test_employee
(
index int NOT NULL,
name varchar(100),
date_of_birth date,
address varchar(100),
id_dep int NOT NULL,
CONSTRAINT C_PRIMARY PRIMARY KEY (index) DISABLED
);
CREATE TABLE store.test_department
(
index int NOT NULL,
name varchar(100),
describe varchar(100),
CONSTRAINT C_PRIMARY PRIMARY KEY (index) DISABLED
);
我需要从上面两个表中创建一个包含许多列的投影,我当前的代码如下所示:
CREATE PROJECTION public.employee_department_super
(
idEmp,
idDep,
empName,
date_of_birth,
address,
depName,
describe
)
AS
SELECT e.index,
e.id_dep,
e.name,
e.date_of_birth,
e.address,
d.name,
d.describe
FROM
public.test_employee e
inner join store.test_department d
on e.id_dep=d.index
ORDER BY e.name
UNSEGMENTED ALL NODES;
但我收到一个错误:
[Code: 9366, SQL State: 0A000] [Vertica][VJDBC](9366) ROLLBACK: Projections must select data from only one table
我怎么解决这个问题?
解决方案
答案是:你不能。
加入预测已成为过去式。
Vertica 已经开始通过扁平表的概念来满足减少连接的需要。
您将两列作为展平列添加到test_employee
表中,每当您将新行插入表中时,它们就会自动设置。
ALTER TABLE public.test_employee
ADD depname VARCHAR(100)
DEFAULT(
SELECT name FROM store.test_department d WHERE d.index=id_dep
);
ALTER TABLE public.test_employee
ADD describe VARCHAR(100)
DEFAULT(
SELECT describe FROM store.test_department d WHERE d.index=id_dep
);
两个展平的列不计入您的许可证大小。
推荐阅读
- javascript - 将 React 组件导出为 JPG 并保存到项目文件夹
- automated-tests - 如何检测 Appium Java TestNG 中的崩溃
- javascript - 尝试在 DataTable Bootstrap 中的每一行下显示按钮,但只能在特定列而不是整行下显示它们
- vb.net - 使用 vb.net 搜索 linq 的问题
- git - 如何将 Bower、nmr、node 和 git 连接到 Netbeans
- html - 如何让CSS动画顺利回到原位
- python - 多个图表不适用于子图功能?Python
- r - R:错误:`c_across()` 只能在 dplyr 动词中使用
- java - Ljava/math/BigInteger 类中没有虚方法 intValueExact()I;
- javascript - 如何在node.js中的post调用的if状态之前解析mongodb collection.find