5

以下の例のように 2 つの mysql テーブルがあります。

車:

RaceID CarID    Dis Grd Date            Time    
8      1    200 A   2010-10-10  20.50
8      2    300 A   2010-10-10  30.50
8      3    200 A   2010-10-10  20.10
9      1    200 A   2010-11-10  20.00
12     1    200 A   2011-12-11  19.50   

レース:

RaceId  CarID   Dis Grd Date        Exp_Time

10  1   200 A   2011-11-11        
10  2   200 A   2011-11-11        
10  3   200 A   2011-11-11        

CARS テーブルのデータに基づいて、Exp_Time 列の Races テーブルにデータを追加したいと考えています。例えば:

RACES.Exp_Time=AVG(CARS.Time) 
WHERE
CARS.CarID=RACES.CarID
CARS.Dis=RACES.Dis
CARS.Grd=RACES.Grd
CARS.Date<RACES.Date

アイデアは、予想される時間は、同じ距離とグリッドでの以前のレース時間からの AVG であるということです。将来のレースは計算 AVG から除外する必要があります。
問題は、RACES テーブルから日付条件を取得することです。私はこのクエリを行います:

UPDATE `RACES` c
INNER JOIN (
SELECT CARS.CarID, CARS.Dis, CARS.Grd, CARS.Date, AVG(Time) AS `Exp_Time`
FROM CARS
WHERE CARS.Date<'2011-11-11'
GROUP BY CarID, Dis, Grd
)
x ON c.CarID=x.CarID AND c.Dis=x.Dis AND c.Grd=x.Grd
SET c.Exp_Time=x.Exp_Time

myseld と日付を入力すると機能します - 2011-11-11 RACES テーブルからデータを取得する方法がわかりません。

誰か助けてくれませんか?前もって感謝します!イヴァン

4

2 に答える 2

3
UPDATE `RACES` c
INNER JOIN (
SELECT CARS.CarID, CARS.Dis, CARS.Grd, CARS.Date, AVG(Time) AS `Exp_Time`
FROM CARS
WHERE CARS.Date < (SELECT  Date 
                   FROM RACES 
                   WHERE    CARS.Date<RACES.Date 
                        AND CARS.Grd=RACES.Grd 
                        AND CARS.CarID=RACES.CarID
                        AND CARS.Dis=RACES.Dis
                        LIMIT 1 
                )
                GROUP BY CarID, Dis, Grd
)
x ON c.CarID=x.CarID AND c.Dis=x.Dis AND c.Grd=x.Grd
SET c.Exp_Time=x.Exp_Time
于 2012-12-29T18:51:48.960 に答える
2

2011-11-11 RACES テーブルからデータを取得する方法がわかりません。

次のように、この述語をJOIN条件に移動できます。

UPDATE `RACES` c
INNER JOIN (
  SELECT 
     CarID, Dis, Grd, Date, AVG(Time) AS `Exp_Time`
  FROM CARS
  GROUP BY CarID, Dis, Grd
)x  ON c.CarID        = x.CarID 
   AND c.Dis          = x.Dis 
   AND c.Grd          = x.Grd
   AND x.DATE(`Date`) < c.DATE(`Date`)
SET c.Exp_Time = x.Exp_Time;
于 2012-12-29T18:47:44.190 に答える