从2个表创建一个表作为结果

yhuiod9q  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(194)

我正在尝试创建一个由两个表组成的表prices and sales该表应包含4列product/date/amount/revenue,其中前3列是sales表的总副本,revenue列应为=sales.amount*prices.price
结果我得到了一张空table

cursor.execute("CREATE TABLE revenue(product VARCHAR(1), date DATE, amount FLOAT, revenue FLOAT);")
cursor.execute("INSERT into revenue SELECT sales.product, sales.date, sales.amount, prices.price*sales.amount FROM sales, prices")
conn.commit()
k4emjkb1

k4emjkb11#

我相信你可以做到这么简单:

CREATE TABLE revenue as
select s.product, s.`date`, s.amount, p.price * s.amount
from sales s
join prices p on s.product = p.product;

最后一行:

join prices p on s.product = p.product;

我假设连接条件可能是。。。
这里有一个小演示

s4chpxco

s4chpxco2#

首先要避免使用 implicit joins 因为它们已经被弃用了一段时间,如果需要的话可以使用像[date]这样的保留字,如果列名有空格/特殊字符或包含sql关键字,则必须将它们括起来:

INSERT INTO revenue (product , [date], amount , revenue)
SELECT s.product, s.[date], s.amount,p.price*s.amount 
FROM sales AS s
INNER JOIN prices AS p ON (join condition)

你可能需要 CAST() 为了 prices.price*sales.amount 如果您遇到任何转换问题,请退出。

相关问题