一对多关联多表查询:如何拆分显示收发方客户姓名列
解决方案
要分别展示发件人和收件人的姓名,你需要两次关联client表,给每次关联的表设置不同别名,对应不同的连接条件即可:
SELECT sender_client.Name_client AS sender_name, recipient_client.Name_client AS recipient_name, -- 可按需添加shipment、employee的其他字段 shipment.*, employee.* FROM package JOIN shipment ON package.Shipment_ = shipment.ShipmentID JOIN client AS sender_client ON sender_client.AccountNumber = package.sender JOIN client AS recipient_client ON recipient_client.AccountNumber = package.recipient JOIN employee ON employee.employeeID = shipment.manager;
关键说明:
- 原查询用
OR关联client表会导致单条package数据生成两条重复结果,且无法区分收发方姓名列;两次独立关联能在同一行同时展示双方信息 - 通过别名
sender_client和recipient_client区分两次关联的client表,分别匹配package的sender和recipient字段
内容的提问来源于stack exchange,提问作者Vegeta_sama
相关产品推荐
相关产品推荐

