私はちょっと立ち往生しています..
私は2つのテーブルを持っています
mysql > EXPLAIN event;
+-------------+--------------+------+-----+---------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------------------+-----------------------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | NO | MUL | | |
| extUrl | varchar(192) | NO | | | |
+-------------+--------------+------+-----+---------------------+-----------------------------+
1 つのイベントに複数のイベントを含めることができます
mysql> explain eventDate;
+----------------+--------------+------+-----+---------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------------------+-----------------------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| category_id | int(11) | NO | MUL | 0 | |
| event_id | int(11) | NO | MUL | 0 | |
| location_id | int(11) | NO | MUL | 0 | |
| name | varchar(100) | NO | | | |
| eventDate | timestamp | NO | | 0000-00-00 00:00:00 | |
+----------------+--------------+------+-----+---------------------+-----------------------------+
次の予定の でid
イベントをクエリしたいのですが、そのクエリを作成する方法がわかりません。location_id
eventDate
私は現在これを持っています
SELECT
e.id,
d.location_id,
d.eventDate
FROM
event e
INNER JOIN eventDate d ON d.event_id = e.id AND d.eventDate >= CURRENT_TIMESTAMP
WHERE
e.id = 5107
GROUP BY
e.id
ORDER BY
d.eventDate ASC
これで結果が返されますが、私は GROUP BY イベントであるため、実際に次の eventDate が選択されていることを確認する方法がわかりません。また、集計関数 (group by one、aggregate many) も使用していません。これは、クリーンで明確に定義された結果要件ではないようです。MySQL は eventDate 行の 1 つをランダムに選択していますね。