【问题标题】:MySQL Select from three tables [closed]MySQL 从三个表中选择 [关闭]
【发布时间】:2014-08-21 14:15:29
【问题描述】:

我需要编写查询以获取按专业划分的最大汇票的国家/地区。主表为:used_money

我有 3 张桌子:used_moneyusersgroups

我无法在此处发布图片:

我需要得到这样的结果:

Luxembourg    Hacker 200
Albania       Hacker 120
United States Boss    55

【问题讨论】:

  • 查看 JOIN 的工作原理。只要您有一个可以加入他们的唯一密钥(例如 ID),您就可以获得结果。
  • 你尝试过ANYTHING吗?
  • 投了反对票,没有显示任何努力。
  • 考虑提供适当的 DDL。我喜欢艺术,但图片实在是太恶心了。

标签: mysql sql


【解决方案1】:

这样的?

查询:

SELECT country, profession, MAX(money) AS money 
FROM
(   SELECT u.country, g.profession, SUM(um.money) AS money
    FROM user_money um
    JOIN users u ON u.id = um.user_id
    JOIN groups g ON g.id = um.group_id
    GROUP BY g.profession, u.country
    ORDER BY um.money DESC
) t
GROUP BY country
ORDER BY money DESC

SEE DEMO

输出:

+---------------+------------+-------+
| country       | profession | money |
+---------------+------------+-------+
| Luxembourg    | Hacker     |  200  |
| Albania       | Hacker     |  120  |
| United States | Boss       |  55   |
+---------------+------------+-------+

【讨论】:

  • #1052 - Column 'money' in field list is ambiguous
  • @jsphp 已编辑:再试一次
  • @jsphp 也在这里寻找显示sqlfiddle.com/#!2/00750a/1的示例
  • 成功了!非常感谢
  • @jsphp 没问题 :) 如果您可以将答案标记为已接受,将不胜感激:D
猜你喜欢
  • 1970-01-01
  • 2012-10-29
  • 1970-01-01
  • 2012-03-21
  • 1970-01-01
  • 1970-01-01
  • 2019-02-09
  • 1970-01-01
相关资源
最近更新 更多