复合主键表与多外键表SQL关联查询异常求助
SQL复合主键关联多外键字段的查询问题解决
问题描述
关联两张表时出现关联错误:Table1以Type+Code作为复合主键(PK),用于唯一标识行;Table2包含多个以Code为外键(FK)的字段(Code1、Code2等)。需要查询客户名称、各Code字段及其对应的Description,但使用普通INNER JOIN时,所有Code对应的Description均显示为第一个匹配值,无法正确关联。例如Code2为1时,错误显示"potential A"而非正确的"Premium"。
表结构
- Table1:Type(PK)、Code(PK)、Description
- Table2:Number(PK)、Name、Address、Code1(FK)、Code2(FK)、Code3(FK)
错误查询语句
SELECT a.Number, a.Name, a.Code1, b.description, a.Code2, b.description FROM Table2 a INNER JOIN Table1 b ON a.Code1 = b.Code
错误结果
所有Code对应的Description均为第一个匹配值,如BMW的Code2=2时显示"potential A"。
预期输出
显示Name、Code1及对应Description、Code2及对应Description等正确关联的结果。
解决方案(子查询)
SELECT a.Number, a.Name, a.Code1, Description = (SELECT b.description FROM Table1 b WHERE a.Code1 = b.Code), a.Code2, Description = (SELECT b.description FROM Table1 b WHERE a.Code2 = b.Code) FROM Table2 a
内容的提问来源于stack exchange,提问作者nadinexyz24
相关产品推荐
相关产品推荐

