0

我有这种情况的数据库:

餐桌酒店 -----> 餐桌酒店价格

餐桌酒店:

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开始的最低价格

来自“最低价值”的酒店 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
;

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

PRICE_ID HOTEL_ID ROOM_TYPE SINGLE DOUBLE EXTRA HOTEL_NAME LOWEST_PRICE 2 1 deluxe 3 5 10 hotel1 3 1 1 Superior 5 10 20 hotel1 5

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

最小的是3

有什么想法吗?谢谢!

4

2 回答 2

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
于 2013-10-13T15:49:13.710 回答
0

不完全确定你是否需要这个..

如果您已经知道名称为“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注意演示有更多查询什么应该给你相同的结果

于 2013-10-13T16:40:45.363 回答