0

私はゲームに取り組んでおり、可能であればコードを少し簡単にしたいと考えています。クエリを実行する必要がある 2 つのテーブルがあり、1 つはユーザー ID を返すテーブル、もう 1 つはバックグラウンド チェックを行うテーブルです。

統計テーブル: ユーザー ID | ゴールド | 攻撃 | 防御 | ボーナス | ...

ログ テーブル: logid | 攻撃者 | 攻撃された | 時間 | ...

おそらく私が持っている2つのクエリは次のとおりです。

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

SELECT COUNT(*) AS count FROM logs WHERE 攻撃者 = $id AND 攻撃対象 = ユーザー AND 日付 > $time - 86400

$ 変数はもちろん php 変数であり、2 番目のクエリの「ユーザー」は最初のクエリの「AS ユーザー」を参照します。私の目標は、私が攻撃できる最高のゴールドを持つ人のユーザー ID を返すことです。2つに参加する方法はよくわかりませんが、可能であれば参加したいと思います!

4

1 に答える 1

2

これを試してください(テストされていません):

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
于 2012-05-04T14:34:31.180 に答える