私はすべての部品がインストール可能なすべてのバイクにリンクされているパーツ/オートバイ備品Mysqlデータベースで作業しています。それは次のようになります。Mysql:フィールドの最小値と最大値の間に行がありません
part_number motorcycle year
1000 HONDA_CBR1000 2008
1000 HONDA_CBR1000 2009
1000 HONDA_CBR1000 2010
1000 HONDA_CBR1000 2011
1000 HONDA_CBR1000 2012
1000 HONDA_CBR1000 2013
1001 HONDA_CBR600 2008
1001 HONDA_CBR600 2009
1001 HONDA_CBR1000 2008
1001 HONDA_CBR1000 2009
1001 HONDA_CBR1000 2013
だから、ということを意味:パーツ#1001はホンダCBR600にインストールすることができます
- パーツ#1000は
- 2008から2013年にホンダCBR1000にインストールすることができます。
残念ながら、テーブル(約650,000行)は必ずしも正しく充填されていませんでした。この例では、次の行が不足しているわかります:2008、2009年と2013年からHONDA_CBR1000にインストールすることができる部品で#1001は、またの間に「忘れられた」年でインストールすることができます
part_number motorcycle year
1001 HONDA_CBR1000 2010
1001 HONDA_CBR1000 2011
1001 HONDA_CBR1000 2012
ので、 (2010年、2011年および2012年)。
だから、単純なクエリ:(現実には、パーツ#1001は、この自転車にもインストール可能である間)
SELECT * FROM mytable WHERE motorcycle = 'HONDA_CBR1000' AND year = '2011'
は一部のみの#1000の行を取得します。平易な英語で
、私は
SELECT * FROM mytable WHERE motorcycle = 'HONDA_CBR1000'
AND ("minimum year of part_number applicable to HONDA_CBR1000" <= '2011')
AND ("maximum year of part_number applicable to HONDA_CBR1000" >= '2011')
ようなクエリは、すべての結果(1000および1001)を取得だろうと思います。
しかし、どのようにSQLでそれを聞くことができますか?それが遅すぎると思いますか?
ありがとうございました!
https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple- sql-query – Strawberry