簡體   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