gpt4 book ai didi

需要多个连接的 MySQL 查询

转载 作者:可可西里 更新时间:2023-11-01 08:15:44 25 4
gpt4 key购买 nike

我有一个用于记录 child 行为的系统。如果 child 顽皮,则记录为负面,如果行为良好,则记录为正面。

例如 - 如果一个 child 粗鲁,它会得到一个“粗鲁”的负面评价,并且这会以负 x 分记录在系统中。

我的结构可以在这个 sqlfiddle 中看到 - http://sqlfiddle.com/#!9/46904

users_rewards_logged 表中,reward_id 列是一个外键,根据列的类型链接到 deductions 或 achievements 表。如果type为1是扣减奖励,如果type值为2是成就奖励

我基本上想要一个查询来列出如下内容:

  +------------------------------+
| reward | points | count |
+------------------------------+
| Good Work | 100 | 1 |
| Rude | -50 | 2 |
+------------------------------+

所以它会计算数字并根据类型匹配奖励(1 是扣除,2 是成就)

基于 sqlfiddle 执行此操作的好方法是什么?

最佳答案

这是一个获得上述期望结果的查询:

SELECT COALESCE(ua.name, ud.name) AS reward,
SUM(url.points) AS points, COUNT(url.logged_id) AS count
FROM users_rewards_logged url
LEFT JOIN users_deductions ud
ON ud.deduction_id = url.reward_id
AND url.type = 1
LEFT JOIN users_achievements ua
ON ua.achievement_id = url.reward_id
AND url.type = 2
GROUP BY url.reward_id, url.type

您的 SQLFiddle 的 pointstypeusers_rewards_logged 的顺序错误。

这是固定的 SQLFiddle结果:

reward      points  count
Good Work 100 1
Rude -50 2

关于需要多个连接的 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29232008/

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