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, 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 を取得するために呼び出される別のテーブルへのルックアップとして現在の年を使用するように、クエリを変更する必要があります。フィールドがidあり、season年が含まれています。

現在season_id、テーブルに保存していscheduleますが、そのフィールドはもう使用したくありません。アプリのフロントエンドを簡素化しようとしていますが、それがバックエンドを複雑にしています。

現在の年を取得するために使用したいのですEXTRACT(YEAR FROM date) = EXTRACT(YEAR FROM NOW())が、whereステートメントでうまく機能しますが、このコンテキストではこれまで使用したことがありません。

必要なデータを取得するために、選択内でネストされた選択を実行しようとする必要がありますか?

4

1 に答える 1

1
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;
于 2014-11-27T10:11:59.653 に答える