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 的行。

我知道我在这里做错了,鄙视我在谷歌上的 2 天搜索......任何帮助将不胜感激:)

4

4 回答 4

1

我认为你有错误的不等式运算符。不应该max_weight >= '$weight'吗?

于 2013-03-17T13:02:01.773 回答
1

你的意思是MAX_WEIGHT >= $weight

于 2013-03-17T13:02:12.933 回答
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 回答
0

您已$weight设置为 5,但在该行中设置MAX_HEIGHT为 10。

然后该行的最后一个条件评估为10 <= 5。由于未满足条件,因此未返回该行。

于 2013-03-17T13:03:58.527 回答