【发布时间】:2018-04-23 07:34:40
【问题描述】:
我认为stock_details 为:
item INTEGER,
quantity NUMERIC(8,2),
discount NUMERIC(8,2),
taxable NUMERIC(8,2),
tax NUMERIC(8,2),
unique_serial CHARACTER VARYING(50)
.....
我还有两张表:
invoice_item(
id SERIAL PRIMARY KEY,
item INTEGER,
quantity NUMERIC(8,2),
discount NUMERIC(8,2),
taxable NUMERIC(8,2),
tax NUMERIC(8,2),
)
与
unique_invoice_item(
invoice_item INTEGER PRIMARY KEY,
unique_serial CHARACTER VARYING(50),
item INTEGER,
..............,
UNIQUE(unique_serial),
UNIQUE(unique_serial, item),
FOREIGN KEY (invoice_item) REFERENCES invoice_item(id)
}
我希望将来自stock_details 的选择查询中的数据插入invoice_item 和unique_invoice_item。我尝试使用以下查询来执行此操作:
WITH t AS (
INSERT INTO invoice_item AS ii (item, quantity, discount, taxable, tax)
SELECT s.item, s.quantity, s.discount, s.taxable, s.tax
FROM stock_details AS s WHERE ..........
RETURNING ii.id, s.unique_serial
)
INSERT INTO unique_invoice_item
SELECT t.id, s.unique_serial, ........
FROM t JOIN stock_details AS s ON t.unique_serial = s.unique_serial
但上述查询不正确,因为它无法返回 CTE 中的 s.unique_serial。
现在我的问题:
有什么方法可以返回 CTE 中的 s.unique_serial 列?
或
还有其他方法可以实现吗?
注意 除了id 和invoice_item、unique_serial 和unique_serial, item 组合在unique_invoice_item 表中,invoice_item 表中没有任何独特的列。 invoice_item 中的item 列和表unique_invoice_item 中的item 列都引用了一个通用的外部表。
【问题讨论】:
标签: postgresql common-table-expression