为什么我的 "INSERT INTO" 声明不起作用?
Why does my "INSERT INTO" Statement not work?
我正在使用 Apache derbyDB (db2) 和 SQL Workbench 作为环境。我有 10k 条数据记录,我想创建一个具有维度 tables 和事实 table.
的星型模式
dwh_price_paid_records = data table
dm_price_paid_records = data mart table (facts table)
dim_time = data mart table (dimension)
DWH_PRICE_PAID_RECORDS.TRANSACTION_ID = VARCHAR(50)
DWH_PRICE_PAID_RECORDS.PRICE = INTEGER
DWH_PRICE_PAID_RECORDS.DATE_OF_TRANSFER = DATE
DIM_TIME.DATE_ID = Primary key of dim_time (autoincrement start with 1 increment by 1)
DM_PRICE_PAID_RECORDS.DATE_ID = Foreign key NOT NULL from DIM_TIME
在 Facts table (DM_PRICE_PAID_RECORDS) 中,我只想拥有主键、价格(事实)和 ID,以便与维度 table 但它不起作用。
INSERT INTO DM_PRICE_PAID_RECORDS (TRANSACTION_ID, PRICE, DATE_ID) VALUES (SELECT TRANSACTION_ID FROM DWH_PRICE_PAID_RECORDS, SELECT PRICE FROM DWH_PRICE_PAID_RECORDS, SELECT DATE_ID FROM DIM_TIME join DWH_PRICE_PAID_RECORDS on DIM_TIME.DATE = DWH_PRICE_PAID_RECORDS.DATE_OF_TRANSFER WHERE DIM_TIME.DATE =
DWH_PRICE_PAID_RECORDS.DATE_OF_TRANSFER);
我本以为会是这样的结果:
TRANSACTION_ID |价格 | DATE_ID
1| 2324 | 423
2 | 52315 | 234
但我在德语中收到一条错误消息,内容如下:
"VALUES-clause must have atleast one element. Emtpy elements are not allowed"
"VALUES-Klausel muss mindestens ein Element enthalten. Leere Elemente sind nicht zulässig."
非常感谢!
弗里皮
我想你想要 INSERT . . . SELECT
:
INSERT INTO DM_PRICE_PAID_RECORDS (TRANSACTION_ID, PRICE, DATE_ID)
SELECT ppr.TRANSACTION_ID, ppr.PRICE, t.DATE_ID
FROM DWH_PRICE_PAID_RECORDS ppr JOIN
DIM_TIME t
ON t.DATE = ppr.DATE_OF_TRANSFER ;
我正在使用 Apache derbyDB (db2) 和 SQL Workbench 作为环境。我有 10k 条数据记录,我想创建一个具有维度 tables 和事实 table.
的星型模式dwh_price_paid_records = data table
dm_price_paid_records = data mart table (facts table)
dim_time = data mart table (dimension)
DWH_PRICE_PAID_RECORDS.TRANSACTION_ID = VARCHAR(50)
DWH_PRICE_PAID_RECORDS.PRICE = INTEGER
DWH_PRICE_PAID_RECORDS.DATE_OF_TRANSFER = DATE
DIM_TIME.DATE_ID = Primary key of dim_time (autoincrement start with 1 increment by 1)
DM_PRICE_PAID_RECORDS.DATE_ID = Foreign key NOT NULL from DIM_TIME
在 Facts table (DM_PRICE_PAID_RECORDS) 中,我只想拥有主键、价格(事实)和 ID,以便与维度 table 但它不起作用。
INSERT INTO DM_PRICE_PAID_RECORDS (TRANSACTION_ID, PRICE, DATE_ID) VALUES (SELECT TRANSACTION_ID FROM DWH_PRICE_PAID_RECORDS, SELECT PRICE FROM DWH_PRICE_PAID_RECORDS, SELECT DATE_ID FROM DIM_TIME join DWH_PRICE_PAID_RECORDS on DIM_TIME.DATE = DWH_PRICE_PAID_RECORDS.DATE_OF_TRANSFER WHERE DIM_TIME.DATE =
DWH_PRICE_PAID_RECORDS.DATE_OF_TRANSFER);
我本以为会是这样的结果:
TRANSACTION_ID |价格 | DATE_ID
1| 2324 | 423
2 | 52315 | 234
但我在德语中收到一条错误消息,内容如下: "VALUES-clause must have atleast one element. Emtpy elements are not allowed"
"VALUES-Klausel muss mindestens ein Element enthalten. Leere Elemente sind nicht zulässig."
非常感谢! 弗里皮
我想你想要 INSERT . . . SELECT
:
INSERT INTO DM_PRICE_PAID_RECORDS (TRANSACTION_ID, PRICE, DATE_ID)
SELECT ppr.TRANSACTION_ID, ppr.PRICE, t.DATE_ID
FROM DWH_PRICE_PAID_RECORDS ppr JOIN
DIM_TIME t
ON t.DATE = ppr.DATE_OF_TRANSFER ;