mysql - 查询未选择的最接近值

标签 mysql pdo

我认为下面的代码中的这一行: Poscode , ABS( Poscode - :distance ) AS distance 被忽略:

所以它只是考虑这一行,因此返回所提供邮政编码的确切记录,而不是列出与给定邮政编码最接近的所有记录!

$bindings[] = array(":distance", $postcode, PDO::PARAM_STR);

查询:

$rate=$data['slider1'];

$key =array_keys($data['sub']); 
//print_r($key);
$pricing2 = $data['slider1'];
$pricing = $pricing2 * 1.15;
$postcode = $data['postcode'];


$bindings = array();
$bindings[] = array(":pricing", $pricing, PDO::PARAM_STR);
$bindings[] = array(":distance", $postcode, PDO::PARAM_STR);

$key_placeholders = array();
foreach($key as $k => $v) {
    $placeholder = ":subid".$k;
    $bindings[] = array($placeholder, $v, PDO::PARAM_INT);
    $key_placeholders[] = $placeholder;
}
$sql = "SELECT Name,PostUUID,pricing,Poscode , ABS( Poscode - :distance ) AS distance,subname,Reputation,ReviewPlus,ReviewNeg,week_morning,week_afternoon,week_evening,weekend_morning,week_afternoon,week_evening,weekend_morning,weekend_afternoon,week_evening,weekend_morning,weekend_afternoon,weekend_evening,date,Phone,Sex,UUID,catname FROM posts,subjects,categories "
        . "WHERE posts.subid IN (". implode(",",$key_placeholders).") "
        . "AND posts.pricing <=:pricing "
        . "AND posts.Poscode =:distance "
        . "AND posts.subid=subjects.subid "
        . "AND subjects.catid=categories.catid "
        . "ORDER BY distance "
        . "DESC LIMIT 100";

$statement = $pdo->prepare($sql);
foreach($bindings as $b) {
    $statement->bindValue($b[0],$b[1],$b[2]);
}
$statement->execute();

最佳答案

语句的 SELECT 部分选择为每行返回哪些数据 - 因此 ABS( Poscode - :distance ) AS distance 将返回一个名为 的字段distance 即每行的字段 Poscode 与值 :distance 之间的差。

语句的 WHERE 部分选择要返回的行。

因此,如果您想更改返回的行(以获取给定距离内的条目),您需要更改 WHERE 子句。

关于mysql - 查询未选择的最接近值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30911915/

相关文章:

javascript - 如果所选用户名已存在,则提醒用户

php - 在 PHP 中使用 'simplexml_load_file()' 读取 RSS 源时仅显示项目符号列表

php - MySQL 连接在并行 Cron 任务期间关闭

php - PDO PHP MYSQL session

php - Codeigniter : unable to connect to database, 服务器错误

mysql查询将行输出到列

mysql - 替换sql中字符串的开头

javascript - FullCalendar 在设定的时间内每周重复 mysql 事件

php - 有关 MySQL、Azure、PHP 和 DigitalOcean 的基本问题

php - 'PDOException' 消息 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ' 214748364 7' for key ' contact_no'