在 SQL 中使用外部联接
Using Outer joins in SQL
通过分析以下 图表,我必须进行查询以列出所有产品 (product) 及其相关类别 ( product_category)
如果他们有的话。否则,显示类别的值 (null)。
仅显示 PRODUCT_NAME 和 CATEGORY_NAME 列。
示例输出:
PRODUCT_NAME
CATEGORY_NAME
ProForm 6.0 RT
Fitness
Wilwood 260-11179
Automotive
HC-SR04
null
所以这是我的查询:
SELECT PRODUCT.name as PRODUCT_NAME, PRODUCT_CATEGORY.name as CATEGORY_NAME
FROM PRODUCT
JOIN PRODUCT_CATEGORY ON PRODUCT.product_category_id = PRODUCT_CATEGORY.product_category_id
但我不确定我的查询,确实我认为我应该使用外连接。
你差不多明白了。您将需要使用 左外连接 来获得您要查找的结果:
SELECT PRODUCT.name as PRODUCT_NAME, PRODUCT_CATEGORY.name as CATEGORY_NAME
FROM PRODUCT LEFT JOIN PRODUCT_CATEGORY
ON PRODUCT.product_category_id = PRODUCT_CATEGORY.product_category_id
左外部联接将 return 左侧的所有记录 table (PRODUCT)。如果右侧 table (PRODUCT_CATEGORY) 中没有连接记录,那么右侧 table 中的所有列都将被 return 编辑为 NULL记录。
通过分析以下 图表,我必须进行查询以列出所有产品 (product) 及其相关类别 ( product_category) 如果他们有的话。否则,显示类别的值 (null)。
仅显示 PRODUCT_NAME 和 CATEGORY_NAME 列。
示例输出:
PRODUCT_NAME | CATEGORY_NAME |
---|---|
ProForm 6.0 RT | Fitness |
Wilwood 260-11179 | Automotive |
HC-SR04 | null |
所以这是我的查询:
SELECT PRODUCT.name as PRODUCT_NAME, PRODUCT_CATEGORY.name as CATEGORY_NAME
FROM PRODUCT
JOIN PRODUCT_CATEGORY ON PRODUCT.product_category_id = PRODUCT_CATEGORY.product_category_id
但我不确定我的查询,确实我认为我应该使用外连接。
你差不多明白了。您将需要使用 左外连接 来获得您要查找的结果:
SELECT PRODUCT.name as PRODUCT_NAME, PRODUCT_CATEGORY.name as CATEGORY_NAME
FROM PRODUCT LEFT JOIN PRODUCT_CATEGORY
ON PRODUCT.product_category_id = PRODUCT_CATEGORY.product_category_id
左外部联接将 return 左侧的所有记录 table (PRODUCT)。如果右侧 table (PRODUCT_CATEGORY) 中没有连接记录,那么右侧 table 中的所有列都将被 return 编辑为 NULL记录。