1

我有一张表格,其中列出了几个旅行,每个旅行都有几种不同价格的住宿类型,以及许多其他字段,如日期、截止日期等。很容易设置显示数组以显示旅行,日期,截止日期,但我还想选择并显示每次旅行的最高(和最低,如果不是 0)住宿费率。我可能不理解我看到的一些答案,但大多数答案似乎是在一个字段内而不是跨字段寻找最大值。我假设一旦我知道如何找到最大值,找到最小值将是相同的基本过程。

带有示例数据的缩写表结构是:

id   tourID    RmA    RmB   RmC   RmD ...other fields...
1      mb      600    450   550   300
2      kr      900      0   600   450
3      ww      500    650   550   600
4      wf      750    300   400   500

我想添加到当前显示的是:

Tour     Rates
 mb    300 - 600 
 kr    450 - 900
 WW    500 - 650
 wf    300 - 750

如果我重复一个常见问题,我深表歉意,但可能是我没有以谷歌搜索我的问题以找到合适的答案。

4

2 回答 2

0
SELECT Tour,GROUP_CONCAT(LEAST(RmA,RmB,RmC,RmD),GREATEST(RmA,RmB,RmC,RmD) SEPARATOR'-') as Rates FROM table

您只需使用最小和最大从所有 4 列中获取最大值和相应的最小值,然后将它们与 group_concat 一起添加。

    SELECT Tour,GROUP_CONCAT(LEAST(
COALESCE(NULLIF(RmA,0),NULLIF(RmB,0),NULLIF(RmC,0),NULLIF(RmD,0)),
COALESCE(NULLIF(RmB,0),NULLIF(RmC,0),NULLIF(RmD,0),NULLIF(RmA,0)),
COALESCE(NULLIF(RmC,0),NULLIF(RmD,0),NULLIF(RmA,0),NULLIF(RmB,0)),
COALESCE(NULLIF(RmD,0),NULLIF(RmA,0),NULLIF(RmB,0),NULLIF(RmC,0)))
    ,GREATEST(RmA,RmB,RmC,RmD) SEPARATOR'-') as Rates FROM table
于 2013-10-01T21:16:44.173 回答
0

您正在寻找LEAST()GREATEST()文档

于 2013-10-01T21:13:59.753 回答