我有一个表格,列出了几个旅游,每个旅游都有几种不同价格的住宿类型类别,以及许多其他字段,如日期、截止日期等。 设置显示显示旅行,日期,截止日期的数组很容易,但我还想选择并显示每个旅行的最大(如果不是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
如果我重复一个常见问题,我深表歉意,但可能是我没有以某种方式用谷歌搜索我的问题以找到合适的答案。
您正在寻找LEAST()
和GREATEST()
(docs)
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