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

连接三张表获取匹配与不匹配数据,显示全部部门含无发票项

问题解决:查询所有部门及对应发票金额(含无发票部门)

原查询的问题

  • 使用CROSS JOIN会生成INVOICE和DEPARTMENT的笛卡尔积,直接导致大量重复数据
  • 连接顺序错误,没有以DEPARTMENT作为主表,无法保留无对应发票的部门(比如HRA)

正确SQL语句

SELECT
    D.DEP_NAME,
    I.SPENT
FROM DEPARTMENT D
LEFT JOIN ROLES R ON D.DEP_ID = R.DEPARTMENT_ID
LEFT JOIN INVOICE I ON R.ROLE_ID = I.ROLEID
ORDER BY D.DEP_NAME;

逻辑说明

  1. 以DEPARTMENT表作为查询起点,确保所有部门都会被返回
  2. 左连接ROLES表,通过部门ID关联,即使部门没有对应角色,也会保留该部门行
  3. 再左连接INVOICE表,通过角色ID关联,无对应发票的部门,SPENT字段会自动显示NULL
  4. 最后按部门名称排序,完全匹配期望输出

执行结果

DEP_NAME        | SPENT
----------------|------
ACCOUNTING       | 500
CUSTOMER_SERVICE | 400
HRA              | NULL

内容的提问来源于stack exchange,提问作者Pechiyappan Raj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:45:11