php - 在 php 循环中使用 sql 函数 min()

标签 php sql min minimum

我必须从表“products”中输出一些产品,以及从表“product_licenses”中输出最低价格,这是此查询中该表中我需要的唯一列。

但是,当我尝试使用 sql 函数 MIN() 时,我的循环只运行一次代码并获得第一个结果然后停止,所以我在这里有点迷路。

这是使用 min() 的查询:

$mysql->query("
    SELECT pd.*, min(lc.price) AS price
    FROM `products` AS pd, product_licenses AS lc
    WHERE pd.`status` = '1' AND lc.product_id = pd.id
    ORDER BY pd.`id` ASC
    $limitQuery
");

我正在使用这个函数来获取产品,但不幸的是,这个获取了最高的价格:

public function getAllProducts($start = 0, $limit = 0, $order = '`datetime` ASC') {
    global $mysql;


    $limitQuery = '';
    if ($limit != 0) {
        $limitQuery = " LIMIT $start,$limit ";
    }
    **// Not working if I use min() on lc.price**
    $mysql->query("
        SELECT pd.*, lc.price
        FROM `products` AS pd, product_licenses AS lc
        WHERE pd.`status` = '1' AND lc.product_id = pd.id
        ORDER BY pd.`id` ASC
        $limitQuery
    ");

    if ($mysql->num_rows() == 0) {
        return false;
    }

    $this->usersWhere = '';
    $return = array();
    while ($d = $mysql->fetch_array()) {
        $categories = explode(',', $d['category_id']);
        unset($d['category_id']);
        foreach ($categories as $c) {
            $c = trim($c);
            if ($c != '') {
                $d['category_id'][$c] = $c;
            }
        }

        $return[$d['id']] = $d;
    }

    $this->foundRows = $mysql->getFoundRows();

return $return;
}

最佳答案

在您的查询中添加 GROUP BY。您当前的查询仅返回一个结果,因为您使用的是聚合函数 (MIN) 但未对其进行分组。

SELECT  pd.col1, 
        pd.col2, min(lc.price) AS PRICE
FROM   `products` AS pd
             INNER JOIN product_licenses AS lc
                  ON lc.product_id = pd.id
WHERE    pd.`status` = '1' 
GROUP BY pd.col1, pd.col2, pd.col3
ORDER BY pd.`id` ASC
$limitQuery

PS:发布你的数据库结构和记录。社区会清楚地理解您的问题:)

关于php - 在 php 循环中使用 sql 函数 min(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12143162/

相关文章:

java - 清理自动生成的 SQL 架构的最佳方法

mysql - 使用另一个表中的相关值更新逗号分隔的 ID

mysql - SQL `update` 如果行中存在键组合 - 否则创建新行

php - 哪些文件需要进入安全目录?

javascript - 我的 WordPress 站点中的 FTP 服务器上的文件已损坏

php - 在 PHP 中解析 Wikipedia API json

php - 计算每个页面请求的查询数?

arrays - 查找数组元素中的最大差异

java - 我需要帮助从 2 个单独的 Arraylist 创建一个新的 Arraylist

php - mysql找到最小的+可用的唯一ID