0

テーブルがあるとします...

キャリブレーション:

  • 日にち
  • 校正係数

そして別のテーブル...

読書:

  • 日にち
  • 読む

読み取りは定期的に行われます... キャリブレーション (後続の読み取りは変更されませんが、キャリブレーション時に読み取りがどれだけずれているかを把握するだけです) はまれに発生します。そのため、いつでも、最新のCalibrationFactor が何であれ、読み取り値を修正する必要があります。SELECT ステートメントこの修正を行う必要はありません。私はそれらを同じ列に並べたいだけです。

したがって、次のような SELECT が必要です: Readings.Date, Readings.Reading, Calibrations.CalibrationFactor ここで、CalibrationFactor はReadings.Date よりもまだ古い最新のものです。ここで以前の質問のいくつかを見てきましたが、私が見つけた最も近いものは、最新のキャリブレーション、期間のみを見つけるものです ( SQL 結合: 1 対多の関係で最後のレコードを選択する)

アイデア?

4

2 に答える 2

1

リンクした質問は、必要なものをほとんど提供すると思いますが、別の方法が必要な場合は、試すことができます(mysqlバージョン)

select reading.dated, reading.reading, ( 
  select  factor 
  from calibration 
  where calibration.dated < reading.dated
  order by calibration.dated desc limit 1 
) factor
from reading

このSql Fiddleを参照してください

于 2013-04-25T20:27:35.890 に答える