0

私は3つのテーブルを持っています:

価格

id   price   date
1     50     20130716
2     30     20130717

TVA

id    val      start      end
1      7     20080101   20103112
2      8     20110101

マージン

id    qty    marg
1     500     25
2     600     20
3     800     15
4     1000    13
5     1250    11
...

今、私はうまくいかないこのクエリを持っています:

$quantity = '557';

$link->query("
       SELECT (
              (price+marg)*((val+100)/100)
              )
       FROM PRICE
         JOIN TVA
         JOIN MARGIN
       WHERE date = '20130717' 
             AND end = ''
             AND qty = '$quantity'
");

qty = '557'問題は、テーブルに がないことです。私がやりたいのは、(この場合) '557' に最も近い数量を選択することです。

したがって、次の場合:

$quantity = '557'クエリは選択する必要があります600

$quantity = '701'クエリは選択する必要があります800

$quantity = '1238'クエリは選択する必要があります1250

これは可能ですか?

4

3 に答える 3

0
...
AND `qty` <= $quantity
ORDER BY `qty` DESC
LIMIT 1
于 2013-07-18T15:08:46.140 に答える
0

自分の値よりも大きい値を取得し、昇順で並べて、結果を 1 つに制限できます。したがって、値を大きくするか、自分のものと同じにすることができます

  SELECT (
              (price+marg)*((val+100)/100)
              )
       FROM PRICE
         JOIN TVA
         JOIN MARGIN
       WHERE date = '20130717' 
             AND end = ''
             AND qty >= '$quantity'
ORDER BY qty ASC LIMIT 1

同じ方法で、数値よりも低い値を取得し、どれが数量に近いかを確認できます

于 2013-07-18T15:08:49.723 に答える