我在PostgreSQL数据库中创建了3个表,如下所示:
--- "Balance sheet", etc..
CREATE TABLE statement (
[id] int NOT NULL PRIMARY KEY,
[name] varchar(255) NOT NULL,
companyId int NOT NULL,
FOREIGN KEY (companyId) REFERENCES company ([id]),
);
--- "Tangible assets", "Outstanding stock", etc
CREATE TABLE statementRow (
[id] int NOT NULL PRIMARY KEY,
statementId int NOT NULL,
rowOrder int NOT NULL,
rowTitle varchar(255) NOT NULL,
FOREIGN KEY (statementId) REFERENCES statement ([id]),
);
--- The Facts
CREATE TABLE statementFact (
statementRowId int NOT NULL,
[date] date NOT NULL,
amount numeric NULL,
PRIMARY KEY ([date], statementRow),
FOREIGN KEY (statementRowId) REFERENCES statementRow ([id])
);
问题是,当我正在抓一个页面并为一些公司得到一个值“100”时,让我们在“库存”行的“资产负债表”声明中说“AAA”。
我如何连接前两张表statement
&的所有这些内容。 statementRow
表,以确保我使用Python将amount
列中的值插入statementRowId
表中statementFact
列旁边的正确行?
我尝试了很多次,但一直得到错误的价值,任何人都可以帮助我吗?
更新
我使用的上次查询:
cur.execute("SELECT * FROM statement AS st INNER JOIN statementsRow USING (statement_id)")
result = [row[0] for row in cur.fetchall()]
query = "INSERT INTO statementsFact (date, amount) VALUES (%s, %s)"
cur.executemany(query, statementRowId)
con.commit()
另外我不知道是否应该使用JOIN来连接相关的数据还是有一种简单的方法?
使问题更清晰:
如何在amount
表中插入值(statementFact
)并使用右行(statementRowId
),考虑其他表中的其他相关列?