sql - 为什么我的 "INSERT INTO"语句不起作用?

标签 sql derby

我正在使用 Apache derbyDB (db2) 和 SQL Workbench 作为环境。我有 10k 条数据记录,我想创建一个包含维度表和事实表的星型模式。

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

在事实表 (DM_PRICE_PAID_RECORDS) 中,我只想让主键、价格(事实)和 ID 与维度表建立关系,但它不起作用。

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);

我本以为会是这样的结果:

交易编号 |价格 | DATE_ID

1| 2324 | 423

2 | 52315 | 234

但是我在德语中遇到了类似这样的错误: “VALUES 子句必须至少有一个元素。不允许有空元素”

“VALUES-Klausel muss mindestens ein Element enthalten. Leere Elemente sind nicht zulässig。”

非常感谢! 翻转

最佳答案

我想你想要 INSERT 。 . .选择:

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 ;

关于sql - 为什么我的 "INSERT INTO"语句不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56137420/

相关文章:

mysql从查询的2个字段的结果中得到差异

sql - 在JavaDB Apache Derby中,我不知道是什么导致错误: Syntax error: Encountered “)” at line 30, column 1. SQLState: 42X01

java - 在文件系统中打开 Derby/JDBC 数据库

database - 数据库写操作是否可以被读操作阻塞?

java - webapp 中的异常,即org.apache.jasper.JasperException

php - 将 php 数组值用于带有内爆函数的 mysql 插入查询

android - SQLite 查询选择一行并返回 2 下一行

mysql - SQL - 包含事物列表的数据?

mysql - 从 information_schema 获取所有表,MySQL

database-connection - 与Derby有其他连接(只读)