【发布时间】:2021-08-17 05:20:39
【问题描述】:
我有这三张桌子;假设表(尤其是 A)的数据量非常大,如何从 b_table 和 a_table 插入表 C (c_table):
表 B:
CREATE TABLE b_table
(
NAME varchar2(10),
ID number PRIMARY KEY
)
表 A:
CREATE TABLE a_table
(
CODE number,
RATE number,
DATEE date,
CONSTRAINT fk_a_table
FOREIGN KEY (CODE) REFERENCES b_table(ID)
);
表 C:
CREATE TABLE c_table
(
DATEE date,
USD number,
EUR number,
OBP number
);
【问题讨论】:
-
“表 A”被称为
b_table,而“表 B”被称为a_table?!?!?这违反了所有最小意外原则!! -
这能回答你的问题吗? Oracle SQL pivot query
-
@astentx Thins 非常接近,但我的问题是按日期对行进行分组
-
@marc_s 感谢您提及这一点。我正在编辑问题
-
只是对桌子设计的评论:您应该与您的名字保持一致。如果您在货币表中将货币 ID 称为
id,则不要在汇率表中将其称为code。例如,称之为currency_id。然后,对于您当前的两个表,您可以考虑使用自然键。 USD 和 EUR 是永远不会更改的 ISO 代码,因此您可以将它们用作数据库中的键。 (不过,我不知道 OBP 是什么。如果表中确实包含 ISO 未知的“货币”,那么使用该列作为自然键可能不是一个好主意。)
标签: sql oracle sql-insert