gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 23:31:01 25 4
gpt4 key购买 nike

我必须从表“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com