1

単純なクエリに行き詰まりましたが、なぜ期待どおりに動作しないのかわかりません。次のように、データベースに 3 つの値を設定しています。

$measure = 'kg';
$country_code = 'DE';
$weight = '5';

WEIGHT_UNIT | COUNTRIES | MAX_WEIGHT | PRICE
kg          | DE,AT     | 10         | 25.55
lbs         | DE,AT,CH  | 5          | 15.99 

私のPHPクエリは次のようになります。

SELECT *
FROM `article_shipping_options`
WHERE `weight_unit` = '$measure'
    AND `countries` LIKE '%$country_code%'
    AND `max_weight` <= '$weight'
LIMIT 1;

私が期待していた結果は、価格が 25.55 の行でした。

私はここで何か間違ったことをしていることを知っています。Googleでの2日間の検索を軽蔑します...どんな助けも大歓迎です:)

4

4 に答える 4

0

5に$weight設定しましたが、行MAX_HEIGHTは 10 です。

次に、その行の最後の条件は として評価され10 <= 5ます。条件が満たされていないため、行は返されませんでした。

于 2013-03-17T13:03:58.527 に答える
0

使ってみてFIND_IN_SET()使うmax_weight >= '$weight'

SELECT * 
FROM   article_shipping_options 
WHERE  weight_unit='$measure' AND 
       FIND_IN_SET($country_code, countries) > 0  AND 
       max_weight >= '$weight' 
LIMIT  1;
于 2013-03-17T13:00:35.167 に答える