table_2へのINNERJOINを使用してtable_1のフィールドでWHERE句を使用する方法。以下のようなもの。
SELECT t1.result, t1.result_date
FROM outcomes t1
WHERE t1.status = 'finished'
INNER JOIN games t2
ON t1.game_id = t2.game_id
WHERE t2.closing_time < NOW();
以下はサンプルテーブルです。
ゲームテーブル
-------------------------------------------------------
game_id name start_time closing_time
--------------------------------------------------------
1 aaa 2018-04-25 16:00:45 2018-04-25 16:30:45
2 bbb 2018-04-25 17:00:45 2018-04-25 17:30:45
3 ccc 2018-04-25 18:00:45 2018-04-25 18:30:45
---------------------------------------------------------------
結果表
----------------------------------------------------------------------
id game_id result round result_date status
----------------------------------------------------------------------
1 1 2,4,6 1 2018-04-25 16:15:45 finished
2 1 4,5,3 2 2018-04-25 16:35:45 canceled
3 2 1,2,4 1 2018-04-25 17:15:45 finished
4 2 5,2,4 2 2018-04-25 17:30:45 canceled
5 3 1,2,3 1 2018-04-25 18:15:45 finished
6 3 2,2,5 2 2018-04-25 18:30:45 to-be-confirmed
---------------------------------------------------------------------
現在の時刻が2018-04-2518:13であるとすると、予想される出力は次のとおりです。
2,4,6 2018-04-25 16:15:45
1,2,4 2018-04-25 17:15:45
これは、結果テーブルからそれぞれ1と3に等しいidを持つ行に対応します
WHERE
句は1つしか存在できず、すべてのFROM
andJOIN
句の後に配置する必要があります。条件をと組み合わせAND
ます。
SELECT t1.result, t1.result_date
FROM outcomes t1
INNER JOIN games t2
ON t1.game_id = t2.game_id
WHERE t2.closing_time < NOW())
AND t1.status = 'finished'
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加