【发布时间】:2015-04-14 13:56:14
【问题描述】:
我正在处理一项任务,该任务要求我将两行插入到表中,每行包含一个计算字段。除了 P.CODE 之外,这两个语句都是相同的,但尽管如此,一个 SQL 语句的计算字段的值之一显示为空。我检查了包含 SUM 中使用的值之一的产品表,没有发现任何异常。谁能弄清楚为什么我的一个语句得到 null 值而不是另一个?
SQL
INSERT INTO line(inv_number, line_number, p_code, line_units, line_price)
VALUES(1009, 1, '23109-HB', 5, (SELECT SUM(p_price * line_units)
FROM product JOIN line USING (P_CODE)
WHERE p_code = '23109-HB'));
--LINE_PRICE OF NULL BEING INSERTED HERE
INSERT INTO line(inv_number, line_number, p_code, line_units, line_price)
VALUES(1009, 2, '14-Q1/L3', 2, (SELECT SUM(p_price * line_units)
FROM product JOIN line USING (P_CODE)
WHERE p_code = '14-Q1/L3'));
输出
1009 1 23109-HB 5 49.8
1009 2 14-Q1/L3 2 (null)
SUM 函数中使用的产品表中的数据
14-Q1/L3 9.00-in. pwr. saw blade 12-FEB-14 18 12 17.5 0 21344
23109-HB Claw hammer 19-FEB-14 23 10 9.95 0.1 21225
**更新 我想我可能已经弄清楚了,它实际上非常明显而且有点尴尬。 “行”表中有一行,其 p_code 值已经为 23109-HB,因此它对该行的字段执行了计算。但是,行表中没有 p_code 值为 14-Q1/L3 的行,因此 SQL 语句的 line_price 评估为 NULL!有没有办法可以将 SUM 与来自同一插入语句的数据一起使用,或者这些值是否必须存在于表中? (对不起,如果这是一个不好的问题,我是新人)
【问题讨论】:
-
你有这个 p_code = '14-Q1/L3' 吗?
-
或者对于 p_code = 14-1/L3,line_units 是否为 0?
-
@sqluser 感谢您的回复-请参阅上面的编辑
-
“SUM 与来自同一插入语句的数据”是什么意思?你能澄清一下吗?
-
所以我有这个显然可以工作的语句..
INSERT INTO line(inv_number, line_number, p_code, line_units, line_price) VALUES(1009, 1, '23109-HB', 5, (SELECT SUM(p_price * 5) FROM product WHERE p_code = '23109-HB'));我在那个语句中有两次 5 - 一次将其插入 line_units 列,一次插入 sum 函数以生成一行价格。我想知道我是否可以有一个 sql 语句来引用同一语句中的 line_units,如果这有意义.. @sqluser