Не уверен, как обработать довольно сложный запрос с PHP / MySQL

Этот запрос выглядит так:

INSERT INTO `results` (`class_id`, `rider_id`, `schedule_id`, `finish`, `points`, `season_id` )
SELECT DISTINCT racedata.class_id, riders.id as rider_id, schedule.id as schedule_id,  racedata.cf_finish, racedata.main_points, schedule.season_id
FROM (racedata LEFT JOIN riders ON racedata.ridername = riders.ridername)
INNER JOIN `schedule` ON `schedule`.date = STR_TO_DATE(`racedata`.event_date, '%m/%d/%Y') WHERE cf_finish > 0;

Мне нужно изменить запрос, чтобы он использовал текущий год для поиска в другой таблице с именем seasons чтобы получить идентификатор, связанный с текущим годом. Имеет поля id а также season который содержит годы.

Щас храню season_id в schedule таблица, но не хочу больше использовать это поле. Я пытаюсь упростить интерфейс приложения, что, в свою очередь, усложняет интерфейс.

Я хочу использовать EXTRACT(YEAR FROM date) = EXTRACT(YEAR FROM NOW()) чтобы получить текущий год, он работает там, где заявления хороши, но я раньше не использовал его в этом контексте.

Должен ли я пытаться сделать вложенный выбор внутри моего выбора, чтобы получить данные, которые я хочу?

0

Решение

INSERT INTO `results`
(`class_id`, `rider_id`, `schedule_id`,
`finish`, `points`, `season_id` )
SELECT DISTINCT racedata.class_id, riders.id as rider_id,
schedule.id as schedule_id,  racedata.cf_finish,
racedata.main_points, season.season_id
FROM racedata
LEFT JOIN riders
ON racedata.ridername = riders.ridername
INNER JOIN `schedule`
ON `schedule`.date = STR_TO_DATE(`racedata`.event_date, '%m/%d/%Y')
INNER JOIN `seasons`
ON `seasons`.date = EXTRACT(YEAR FROM NOW())
AND `seasons`.date = EXTRACT(YEAR FROM `schedule`.date)
WHERE cf_finish > 0;
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]