我有这个条件的数据库:
桌上酒店 ----->桌酒店价格
餐桌酒店 :
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