场景:mysql中以合同表为主表,查询发票表,收款单表,报销单表,实现合同执行信息的查询。使用JOIN的话发现出现了很对交叉数据,请问怎么才能实现合同只有一条,后面分别显示发票,收款,报销情况
合同表
合同号 合同类型 合同签订日期
HT001 物业合同 2024/1/1
HT002 安保合同 2024/1/1
HT003 服务合同 2024/1/1
HT004 服务合同 2024/1/1
HT005 服务合同 2024/1/1
发票表
发票号 合同号 发票金额
FP001 HT001 100
FP002 HT001 100
FP003 HT002 100
FP004 HT002 100
FP005 HT003 100
FP006 HT004 100
收款单表
收款单号 合同号 收款金额
SK001 HT001 200
SK002 HT001 200
SK003 HT003 200
SK004 HT003 200
SK005 HT003 200
SK006 HT005 200
报销单表
报销单号 合同号 报销金额
BX001 HT001 300
BX002 HT001 300
BX003 HT002 300
BX004 HT002 300
BX005 HT003 300
BX006 HT004 300
BX007 HT005 300
想要的结果表
合同号 合同类型 合同签订日期 发票号 发票金额 收款单号 收款金额 报销单号 报销金额
HT001 物业合同 2024/1/1 FP001 100 SK001 200 BX001 300
HT001 物业合同 2024/1/1 FP002 100 SK002 200 BX002 300
HT002 安保合同 2024/1/1 FP003 100 BX003 300
HT002 安保合同 2024/1/1 FP004 100 BX004 300
HT003 服务合同 2024/1/1 FP005 100 SK003 200 BX005 300
HT003 服务合同 2024/1/1 FP005 100 SK004 200 300
HT003 服务合同 2024/1/1 FP005 100 SK005 200 300
HT004 服务合同 2024/1/1 FP006 100 BX006 300
HT005 服务合同 2024/1/1 SK006 200 BX007 300
各位不要为了回答而回答,上来就说left join的可不可以仔细看看题啊…left join会出现笛卡尔啊!