SQL一张表怎么链接两次,连接两次数据增加怎么办

test1表:
id uname:
1 张三

test2表:
id test1id score:
1 1 2
2 1 1

test3表:
id test1id price
1 1 1
2 1 1

查出结果:
uname SUM(te.score) SUM(tes.prices)
张三 6 4

想查出结果:
uname score price
张三 3 2

我写的
SELECT uname,SUM(te.score),SUM(tes.prices) FROM test1 t1 LEFT JOIN test2 t2 ON t2.test1_id=t1.id LEFT JOIN test3 t3 ON t3.test1_id=t1.id
GROUP BY uname
单表链接两次数据会相加,应该怎么写呢

回答部分参考、引用ChatGpt以便为您提供更准确的答案:

根据您的需求,您可以使用子查询来实现您想要的结果。以下是示例的SQL查询语句:

SELECT t1.uname, (SELECT SUM(score) FROM test2 t2 WHERE t2.test1id = t1.id) AS score, (SELECT SUM(price1) FROM test3 t3 WHERE t3.test1id = t1.id) AS price
FROM test1 t1
WHERE t1.uname = '张三'

该查询语句使用子查询来分别计算test2表中指定test1id的score总和和test3表中指定test1id的price总和,并通过左连接(LEFT JOIN)将结果与test1表关联,最后按照指定的uname进行筛选。

请注意,上述查询语句中的条件和字段名是根据您提供的表结构进行推测的,如果表结构有所不同,请适当调整查询语句中的表名、字段名和条件。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    我的具体需求是查询三张表的数据,其中有两个链接相同的字段,但是链接后数据会重复增加,我希望优化查询结果,使数据不重复增加,最终查询结果包含三个字段:用户名,积分和价格。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^