繁体   English   中英

SQL 内连接 2 个表

[英]SQL Inner Join 2 Tables

希望得到一些帮助,我尝试了一些内部连接,显示产品表中的所有“产品”信息,任何使用内部连接销售超过 10 件的产品。

PRODUCT TABLE (Columns)
P_CODE, P_DESCRIPT, P_INDATE, P_QOH, P_MIN, P_PRICE, P_DISCOUNT, V_CODE

LINE TABLE (Columns) this table shows the lines/information for each 
invoice

INV_NUMBER, LINE NUMBER, P_CODE, LINE_UNITS, LINE_PRICE, LINE_TOTAL

我知道我必须使用公共键属性 (p_code) 进行连接,但我无法弄清楚如何在内部连接中进行求和。

这是我最近的尝试:

SELECT * PRODUCT FROM PRODUCT
INNER JOIN line
ON product.p_code = line.p_code
WHERE sum(line_units) >=10
AND line.p_code = product.p_code;

错误:靠近“产品”; 语法错误

任何帮助将不胜感激,谢谢。

看起来您在SELECT部分中有表名PRODUCT sum()需要在SELECT部分以及最后的额外HAVING子句中发生。

SELECT *, sum(line_units) as line_units_sum FROM product
INNER JOIN line ON product.p_code = line.p_code
WHERE line.p_code = product.p_code
HAVING line_units_sum >= 10

要求

显示product表中已售出超过 10 件的任何产品的所有产品信息。

解决方案

因为您只想从product表构建投影,并且不需要line表中的任何列,所以您还可以使用如下相关的子查询:

SELECT *
FROM product
WHERE 10 < (
    SELECT COUNT(*)
    FROM line
    WHERE line.p_code = product.p_code
)

如果 JOIN 的成本低于其他替代方案,则数据库优化器可能会选择在内部使用 JOIN。 因此,这并不意味着查询将对外部表记录进行逐行处理。 只有执行计划可以告诉数据库引擎如何执行查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM