これは本質的に、SQL クエリの作成に関する質問です。データベースは sqlite3 で実装されています。私は SQL の比較的新しいユーザーです。
2 つのテーブルがあり、通常とは異なる方法でそれらを結合したいと考えています。以下は、問題を説明するための例です。
表 1 (t1):
id year name
-------------------------
297 2010 Charles
298 2011 David
300 2010 Peter
301 2011 Richard
表 2 (t2)
id year food
---------------------------
296 2009 Bananas
296 2011 Bananas
297 2009 Melon
297 2010 Coffee
297 2012 Cheese
298 2007 Sugar
298 2008 Cereal
298 2012 Chocolate
299 2000 Peas
300 2007 Barley
300 2011 Beans
300 2012 Chickpeas
301 2010 Watermelon
IDと年でテーブルに参加したい。問題は、(1) id が正確に一致する必要があることですが、表 1 の年と完全に一致するものが表 2 にない場合は、次の (より低い) 利用可能な年を選択したいと考えています。私が生成したい種類の選択は、次の結果をもたらします
id year matchyr name food
-------------------------------------------------
297 2010 2010 Charles Coffee
298 2011 2008 David Cereal
300 2010 2007 Peter Barley
301 2011 2010 Richard Watermelon
要約すると、id=297 は表 1 の year=2010 と完全に一致したため、id=297, year=2010 の対応する行は表 2 から選択されます。id=298, year=2011 には一致する年がありませんでした。表 2 では、次の利用可能な年 (2011 年未満) が選択されます。ご覧のとおり、その一致した年 (正確に、または不正確に) が実際に何だったかも知りたいです。
(1) これが SQL だけで実行できるかどうか、または SQL の外部を見る必要があるかどうか (はい/いいえの答え) と、(2) それが面倒でなければ解決策を教えていただければ幸いです。