我有这种情况的数据库:
表酒店----->表酒店价格 表酒店: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
我将从hotel1
显示最低价格hotel1 star来自“最小值”
我试过这个但不能正常工作
$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单双超级酒店'LOWEST_PRICE 2 1豪华3 5 10 hotel1 3 1 1高级5 10 20 hotel1 5
但我希望只显示最低价格列的最低价格
最小的是 3
有什么想法?谢谢!
答案 0 :(得分:0)
根据您的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
答案 1 :(得分:0)
不完全确定你是否需要这个..
如果您知道名为“hotel1”的酒店的ID已经
select
*
, least(single, `double`, extra) as lowest_price
from hotel_price
where
hotel_id = 1
order by
lowest_price
;
如果您不知道您需要加入的酒店的身份证件
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了解演示说明,演示有更多查询可以为您提供相同的结果