这是我目前的MySQL表:
Crop ID Price DateUpdated Area Region
Onion 4 50 2014-02-05 21:42:26 Bulua X
Onion 5 20 2014-02-05 21:42:26 Lapasan X
Onion 14 34.4 2014-02-05 23:12:21 Cogon X
Onion 15 54 2014-02-07 02:40:13 Cogon X
Onion 15 84 2014-02-07 02:40:13 DMarket XI
我希望使用最新的'Crops'
及其对应的'Price'
输出所有'Region'
。
因此,包含具有最新价格的特定Product
和Region
的条目是我所需要的。
假设:
$product = 'Onion';
$region = 'X';
查询为:
$crop_multi = $db->query("SELECT Crop, Price, Area, Region
FROM crops cr WHERE TRIM(Crop) = '{$product}'
AND DateUpdated = (SELECT MAX(DateUpdated) FROM crops WHERE Crop = cr.Crop AND TRIM(Crop) = '{$product}' AND TRIM(Region) = '{$region}')");
$message = "Price of {$product} in markets of Region {$region}:<br>";
foreach ($crop_multi->fetchAll(PDO::FETCH_OBJ) as $row) {
$add = "P{$row->Price}/kilo in {$row->Area}<br>";
$message .= $add;
}
echo $message;
所需的输出是:
Price of Onion in markets of Region X:
P50/kilo in Bulua
P20/kilo in Lapasan
P54/kilo in Cogon
编辑:只是澄清一下,上面的代码是一段摘录。
我在查询phpmyadmin query function
答案 0 :(得分:0)
这是你要找的吗?
"SELECT Crop, Price, Area, Region
FROM crops cr WHERE TRIM(Crop) = ".$product."
AND DateUpdated = (SELECT MAX(DateUpdated) FROM crops WHERE Crop = cr.Crop AND TRIM(Crop) = ".$product." AND TRIM(Region) = ".$region."')"
答案 1 :(得分:0)
你可以试试这个。
SELECT DISTINCT Crop, Price, Area, Region FROM crops tb1
WHERE DateUpdated = (SELECT MAX(DateUpdated) FROM crops tb2 WHERE tb1.Crop = tb2.Crop AND tb1.Area = tb2.Area AND tb1.Region = tb2.Region)
AND TRIM(Crop) = '{$product}' AND TRIM(Region) = '{$region}';
答案 2 :(得分:0)
尝试类似:
SELECT Crop, Price, Area, Region
FROM crops cr WHERE TRIM(Crop) = '{$product}'
AND TRIM(Region) = '{$region}'
AND DateUpdated IN(SELECT MAX(DateUpdated) FROM crops WHERE Crop = cr.Crop AND TRIM(Crop) = '{$product}' GROUP BY Crop, Area)
干杯