gpt4 book ai didi

mysql - 如何对这三个表进行适当的 OUTER JOIN?我不断得到最后一栏中的所有结果,加起来

转载 作者:行者123 更新时间:2023-11-28 23:10:17 25 4
gpt4 key购买 nike

我有三个表:usuarios(用户)cursosUsuarios(每个用户在类(class)中的注册)pagos(付款)

我想列出给定类(class)中的所有用户,并将付款相加。对于还没有付费的用户,他们应该仍然出现在列表中。

这些是我的表格:

CREATE TABLE usuarios(
userID int unsigned not null auto_increment primary key,
userEmail char(50) null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE cursosUsuarios (
cursosUsuariosID int unsigned not null auto_increment primary key,
userID int not null,
cursoID int not null DEFAULT '0'
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE pagos (
pagoID int unsigned not null auto_increment primary key,
userID int not null,
cursoID int null,
pagoMonto int null COMMENT 'aumont of money paid'
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

这是我的查询:

                       SELECT    
usuarios.userID AS userid,
SUM(pagos.pagoMonto) AS total

FROM usuarios
RIGHT JOIN cursosUsuarios
ON usuarios.userID = cursosUsuarios.userID

LEFT JOIN pagos
ON pagos.cursoID = cursosUsuarios.cursoID

WHERE cursosUsuarios.cursoID = 90
GROUP BY usuarios.userID, pagos.cursoID
ORDER BY usuarios.userID DESC

预期的结果是:

userid  total   
1 500
2 NULL
3 200
4 100
5 400
6 NULL
7 NULL
8 NULL
9 NULL
10 NULL

我得到的结果是:

userid  total   
1 1200
3 1200
4 1200
5 1200

我做错了什么?谢谢!

最佳答案

我需要查看您的表格是如何放置的,以获得更准确的结果。由于我不知道这些值是如何排列的,所以我假设您想根据 pagos 表下的每个用户 ID 进行 SUM。

我也不明白为什么你有一个 RIGHT JOIN 然后一个 LEFT 到表。我假设您总是希望 ID 匹配,而不仅仅是存储在 CurosUsuarios 上的内容。随意调整您的 JOINS。

           SELECT    
usuarios.userID AS userid,
pagos1.total
FROM usuarios
LEFT JOIN cursosUsuarios ON usuarios.userID = cursosUsuarios.userID
LEFT JOIN (
SELECT SUM(pagos.pagoMonto) AS total,
pagos.cursoID,
pagos.userID
FROM pagos
WHERE pagos.cursoID = ?
GROUP BY userID
) pagos1 ON pagos1.userID = cursosUsuarios.userID
WHERE cursosUsuarios.cursoID = ?
ORDER BY usuarios.userApellido ASC

关于mysql - 如何对这三个表进行适当的 OUTER JOIN?我不断得到最后一栏中的所有结果,加起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46184975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com