PHP MySQL 从多个列中选择最低值


php mysql select lowest value from multiple coloumn

我有这个条件的数据库:

桌上酒店 ----->桌酒店价格

餐桌酒店 :

hotel_id | hotel_name |
1            hotel1
2            hotel2

表酒店价格

price_id |  hotel_id | room_type |  single | Double | extra |
1              1         superior      5       10        20
2              1          deluxe       3        5        10

我会显示从酒店1开始的最低价格

酒店距离"最小值"1星

我试过这个但没有工作

$query = ("SELECT LEAST(COL1,COL2,COL3) FROM rug WHERE COL1 != '' AND COL2!= '' AND COL3 != ''");
$result=mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());}
$num=mysql_numrows($result);
$i=0;
while ($i < $num) 
{
$pricing[$i]=mysql_result($result, $i);
$i++;
}
sort($pricing);
$lowest_price = $pricing[0]; //lowest price

感谢雷蒙德的回答,这几乎是正确的

select
*
, least(single, `double`, extra) as lowest_price
from hotel_price
where
hotel_id = 1
order by
lowest_price
;

这将在酒店价格表中显示lowest_price列

PRICE_ID HOTEL_ID ROOM_TYPE单人双人间额外HOTEL_NAME LOWEST_PRICE2 1 豪华 3 5 10 酒店1 31 1 高级 5 10 20 酒店1 5

但我只想从lowest_price列中显示一个最低价格

最小的是 3

有什么想法吗?谢谢!

不完全确定是否需要这个。

如果您已经知道名为"Hotel1"的酒店的ID

select
 *
 , least(single, `double`, extra) as lowest_price
from hotel_price
where
 hotel_id = 1
order by
 lowest_price
;

如果您不知道酒店的ID,则需要加入

select
 *
 , least(single, `double`, extra) as lowest_price
from
 hotel_price
inner join 
 hotel
on
 hotel_price.hotel_id = hotel.hotel_id
where
 hotel.hotel_name = 'hotel1'
order by
 lowest_price
;

请参阅演示 http://sqlfiddle.com/#!2/f947b/3 注意演示有更多查询,什么应该给你相同的结果

根据你的SQL语法,我假设你正在使用MySQL。您可以通过此方法解决此问题:

SELECT
(SELECT COL1 from rug) as myField
UNION 
(SELECT COL2 from rug)
UNION 
(SELECT COL3 from rug)
order by myField ASC LIMIT 1