【问题标题】:Multiple MySQL queries with different tables in one具有不同表的多个 MySQL 查询合二为一
【发布时间】:2012-05-04 14:25:56
【问题描述】:

所以我正在开发一款游戏,如果可能的话,我想让我的代码更简单一些。我有两张表需要查询,一张表要返回用户 ID,另一张表要进行背景检查。

统计表: 用户名 |黄金 |攻击 |防御|奖金 | ...

日志表: 登录 |攻击者 |被攻击 |时间 | ...

这是我可能会遇到的两个问题:

SELECT userid AS user FROM stats WHERE ($attack + $bonus) > (defense + bonus) ORDER BY gold DESC LIMIT 1

从日志中选择 COUNT(*) 作为计数 WHERE 攻击者 = $id AND 被攻击 = 用户 AND 日期 > $time - 86400

$变量当然是php变量,第二个查询中的'user'指的是第一个查询中的“AS用户”。我的目标是返回我可以攻击的最高金币的人的用户 ID,我在最后一天攻击了不到 5 次。 我不太确定如何加入这两者,但如果可能的话,我想加入!

【问题讨论】:

  • 我认为您必须使用这两个查询,因为您想检索包含“您可以攻击的最高金币”的一行,而另一个查询则试图检索攻击日志...所以就像尝试将椅子和桌子相加。

标签: php mysql


【解决方案1】:

试试这个(未测试):

SELECT s.userid AS user 
FROM stats s
LEFT JOIN logs l ON (l.attacked = s.userid) // attacked is the one I want to get from stats with the highest gold
WHERE ($attack + $bonus) > (s.defense + s.bonus) 
    AND l.attacker = $id
    AND l.date > $time - 86400
ORDER BY s.gold DESC LIMIT 1

【讨论】:

  • @Copephobia 不客气。如果它有帮助,不要忘记标记答案。 ;-)
猜你喜欢
  • 2012-07-02
  • 2015-06-05
  • 1970-01-01
  • 2012-06-06
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多