Je dois sortir certains produits de la table 'products', ainsi que le prix le plus bas de la table 'product_licenses', qui est la seule colonne dont j'ai besoin dans cette requête.Utiliser la fonction sql min() dans la boucle php
Cependant, lorsque j'essaie d'utiliser la fonction sql MIN(), ma boucle ne parcourt qu'une seule fois le code et obtient le premier résultat, puis s'arrête, donc je suis un peu perdu ici.
C'est la requête en utilisant 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
");
J'utilise cette fonction pour obtenir les produits, mais, malheureusement, va chercher le prix le plus élevé:
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;
}
Combien de lignes sont renvoyées lorsque vous supprimez 'min()'? – Matt
Vous devez déboguer votre requête dans votre base de données avant de poster une question ici – Alfwed
Votre requête donne-t-elle un résultat exact? –