この構造のテーブルがあります:
CREATE TABLE IF NOT EXISTS `mydb`.`sizes` (
`id_size` INT NOT NULL ,
`cm_min` INT NOT NULL ,
`cm_max` INT NOT NULL ,
PRIMARY KEY (`id_size`) )
ENGINE = InnoDB;
このクエリは、サイズ 5 の幅と高さを返します。
select cm_min, cm_max from sizes where id_size = 5;
それは:
45, 56
さて、この範囲の cm_min または cm_max を持つすべてのサイズを取得したいと思います。私はこのようなことを考えました:
http://sqlfiddle.com/#!2/83e93/51
動作しますが、どの範囲にも収まらないサイズがあります。つまり、私がこれを持っている場合:
id_size cm_min cm_max
1 56 59
2 63 67
3 70 74
4 76 79
5 83 86
6 60 62
7 12 14
id_size 6 の値があり、前のクエリを実行すると、選択された 0 行が返されます。厳密には値の間ではありませんが、これよりも大きいサイズと小さいサイズの id_size を取得したいと考えています。この場合、以下が返されます。
id_size cm_min cm_max
1 56 59
2 63 67
または、たとえば、マイナー値である te id_size 7 の値がある場合、次のマイナー値を取得する必要があります。私の場合は次のとおりです。
id_size cm_min cm_max
1 56 59
または、値が大きい場合は、2 番目に大きい値を持つサイズの ID が必要です。
次に、投稿した最初のクエリに結果がない場合は、これを行います: http://sqlfiddle.com/#!2/83e93/32/0
それはに働きます。だから、私の質問は: 1 つのクエリだけで同じことができますか?
説明が明確であったことを願っています。助けていただければ幸いです。前もって感謝します。