You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL4张表关联创建全量视图的外连接查询问题

问题根因
  • 连接类型错误:你使用的NATURAL JOIN本质是内连接,会直接过滤掉无订单的客户Smith的记录,后续连接无法再保留该部分数据
  • 连接逻辑冲突:混用左连接、右连接后,右连接产品表仅会保留产品侧全量数据,客户侧未匹配的记录会被直接丢弃
  • 语法错误:Order是MySQL保留字,你原代码中写的òrder存在字符拼写错误,反引号包裹也不规范
实现方案

你的需求是同时保留全量客户、全量产品的维度数据,再匹配交易关联数据,正确逻辑是先拉取客户和产品的全量组合,再左连接订单关联链路,未匹配字段自动返回NULL,创建视图的代码如下:

CREATE VIEW customer_order_full_view AS
SELECT
    c.lastname,
    o.date AS order_date,
    p.ref AS product_ref,
    p.price,
    po.quantity
FROM Customer c
-- 生成所有客户+所有产品的全量维度组合
CROSS JOIN Product p
-- 左连接订单和关联中间表,不丢失维度数据
LEFT JOIN `Order` o 
    ON c.customer_id = o.customer_id
LEFT JOIN product_to_order po 
    ON o.order_id = po.order_id 
    AND p.product_id = po.product_id;
返回结果说明

执行上述视图查询后,会返回三类数据,完全匹配你的需求:

  1. 正常关联的订单数据:客户Doe的2条订单对应关联的产品、价格、数量都会正常展示
  2. 无订单的客户数据:客户Smith的记录会保留,对应order_date、quantity字段返回NULL
  3. 无订单关联的产品数据:product_id=3的商品记录会保留,对应没有关联订单的行order_date、quantity字段返回NULL

内容的提问来源于stack exchange,提问作者Jean-Luc Aubert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 22:54:02