gpt4 book ai didi

Mysql查询问题

转载 作者:行者123 更新时间:2023-11-29 09:10:22 25 4
gpt4 key购买 nike

我的 mysql 数据库中有 3 个表需要查询。

enter image description here

  • Users_rates(字段:id、userid、raterid、rate、eventid)包含已分配给参与特定事件的用户(userid)的所有费率(rate)( eventid),由其他用户(raterid)

  • Events_participants(字段:id、userid、eventid)包含参与每个事件(eventid)的所有用户(userid)

  • 用户(字段:id、name、lastname)包含所有用户相关数据

我需要查询这三个表来检索用户费率的特定于事件的排名。

例如。约翰、埃里克和马克参加了“eventid=31”。John 从 Mark 处获得了 1 个评分,从 Erik 处获得了 2 个评分。马克从埃里克那里得到了 1 分。但没有人评价过埃里克。

我需要检索每个用户名、姓氏以及 eventid=31 收到的费率总和

我尝试过这个:

SELECT events_participants.userid,users.name,users.lastname,
(SELECT SUM(rate)FROM users_rates WHERE users_rates.eventid=31 AND users_rates.userid=events_participants.userid)AS rate
FROM(( events_participants INNER JOIN users ON events_participants.userid=users.id)
LEFT OUTER JOIN users_rates ON events_participants.userid=users_rates.userid )
WHERE events_participants.eventid=31

但我收到:

userid | name | lastname | rate  

1 | luca | silvestro | 1

3 | claudio | buricchi | 6

3 | claudio | buricchi | 6

正确的查询是什么?

谢谢

卢卡

最佳答案

试试这个:

SELECT users.userid, users.name, users.lastname, temp.sum as rate
FROM users LEFT JOIN (
SELECT userid, SUM(rate) as sum FROM users_rates WHERE eventid = 31 GROUP BY userid
) as temp USING (userid)

它可能会出错,这可能会起作用:

SELECT users.userid, users.name, users.lastname, temp.sum as rate
FROM users, (
SELECT userid, SUM(rate) as sum FROM users_rates WHERE eventid = 31 GROUP BY userid
) as temp WHERE users.userid = temp.userid

关于Mysql查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5777047/

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