初めまして、タイトルで大変失礼いたしました。この質問を適切に表現する方法が本当にわかりませんでした。誰かがより良い言葉遣いを考えられる場合は、それを編集するか、私に教えてください.
質問に:
私は2つのテーブルを持っています。usage_logs
とservers
。servers
クライアントが特定のサーバーと通信するために必要なすべてのサーバー情報を保存します。usage_logs
もちろん、どのユーザーが特定のサーバーをどのサーバーをどのくらいの期間使用したかを保存します。
現在使用されているユーザー数が最も少ないサーバーのサーバー情報を選択するクエリが必要です。
これが私の現在のクエリです:
SELECT servers.ip, servers.serverkey, servers.port, servers.id, COUNT(usage_logs.sid) nbr
FROM servers
LEFT JOIN usage_logs ON servers.id = boot_logs.sid
WHERE usage_logs.time+usage_logs.date > 1344076143
AND usage_logs.sid IS NOT NULL
AND servers.status='ONLINE'
GROUP BY sid
ORDER BY nbr DESC;
は現在の1344076143
時刻に置き換えることができます (実際のスクリプトではそうです)。このクエリはほとんど機能します。サーバーを選択していますが、他のサーバーは実際には使用されていないため、WHERE usage_logs.time+usage_logs.date > 1344076143
基準を満たしていないため、出力にリストされていません。
そのサーバーをまだリストする方法が必要ですが、方法がわかりません。
また、usage_logs.sid IS NOT NULL
最近使用状況の追跡を改善しようと試み始めたばかりなので、今日までsid
は存在しませんでした。
usage_logs.sid
はサーバー ID で、 まで一致しservers.id
ます。
私はこれについて徹底的にグーグルで調べてきましたが、実際にはJOIN
ステートメントを使用したことさえありません。MySQL のスキルを向上させたいと切望しています。