Php 从select中了解下限值及其列名
我有一个带有MySQL数据库的PHP文档,其存储结构如下:Php 从select中了解下限值及其列名,php,sql,select,Php,Sql,Select,我有一个带有MySQL数据库的PHP文档,其存储结构如下: 日期字段 24float对应于24小时的值。(名称为1h、2h、3h、4h…24h) 我使用简单的select:select*从表中获取一行,其中DATE=“2014-02-02”获取25个字段 我想知道1h,2h,3h的哪个场。。。。具有较低的值。我尝试使用PHP和min()函数来实现这一点,但我只检索值,而不是数组的索引 这可能是一个简单的方法来了解这个结果吗?可能在SQL函数中 多谢各位 编辑:我尝试了这一点(考虑到$arra
字段日期
- 24
对应于24小时的值。(名称为1h、2h、3h、4h…24h)float
select*从表中获取一行,其中DATE=“2014-02-02”
获取25个字段
我想知道1h,2h,3h的哪个场。。。。具有较低的值。我尝试使用PHP和min()函数来实现这一点,但我只检索值,而不是数组的索引
这可能是一个简单的方法来了解这个结果吗?可能在SQL函数中
多谢各位
编辑:我尝试了这一点(考虑到$arraySQL以前获得的结果是有效的):
函数获取ArrayFromSQL($arraySQL){
$array=array();
对于($i=1;$i<25;$i++)
{
数组推送($array,$data_day[$i.“h”]);
}
返回$array;
}
[...]
$array=ActainArrayFromSQL($arraySQL)
回波最小值($阵列);
假设您使用的是MySQL,您可以使用least()
函数:
select t.*,
(case when col1 = leastval then 'col1'
when col2 = leastval then 'col2'
when col3 = leastval then 'col3'
. . .
when col24 = leastval then 'col24'
end) as leastvalcol
from (select t.*,
least(col1, col2, . . . , col24) as leastval
from table t
) t;
在抱怨您需要的所有类型之前,您应该知道这个查询比它需要的复杂得多——因为您正在将内容存储在一行中,而该行应该位于一列中。您的表应该为每个小时值单独设置一行,而不是将所有每日值放在一行中。使用更规范化的结构,查询将更简单
编辑:
此表将包含以下列:
Date date,
Hour time, -- or int or varchar() depending on how you really want it captured
Value float
然后,查询可能如下所示:
select date, min(value) as minvalue,
substring_index(group_concat(hour order by value asc), ',', 1) as minhour
from newtable t
group by date;
假设您使用的是MySQL,您可以使用
least()
函数:
select t.*,
(case when col1 = leastval then 'col1'
when col2 = leastval then 'col2'
when col3 = leastval then 'col3'
. . .
when col24 = leastval then 'col24'
end) as leastvalcol
from (select t.*,
least(col1, col2, . . . , col24) as leastval
from table t
) t;
在抱怨您需要的所有类型之前,您应该知道这个查询比它需要的复杂得多——因为您正在将内容存储在一行中,而该行应该位于一列中。您的表应该为每个小时值单独设置一行,而不是将所有每日值放在一行中。使用更规范化的结构,查询将更简单
编辑:
此表将包含以下列:
Date date,
Hour time, -- or int or varchar() depending on how you really want it captured
Value float
然后,查询可能如下所示:
select date, min(value) as minvalue,
substring_index(group_concat(hour order by value asc), ',', 1) as minhour
from newtable t
group by date;
假设您使用的是MySQL,您可以使用
least()
函数:
select t.*,
(case when col1 = leastval then 'col1'
when col2 = leastval then 'col2'
when col3 = leastval then 'col3'
. . .
when col24 = leastval then 'col24'
end) as leastvalcol
from (select t.*,
least(col1, col2, . . . , col24) as leastval
from table t
) t;
在抱怨您需要的所有类型之前,您应该知道这个查询比它需要的复杂得多——因为您正在将内容存储在一行中,而该行应该位于一列中。您的表应该为每个小时值单独设置一行,而不是将所有每日值放在一行中。使用更规范化的结构,查询将更简单
编辑:
此表将包含以下列:
Date date,
Hour time, -- or int or varchar() depending on how you really want it captured
Value float
然后,查询可能如下所示:
select date, min(value) as minvalue,
substring_index(group_concat(hour order by value asc), ',', 1) as minhour
from newtable t
group by date;
假设您使用的是MySQL,您可以使用
least()
函数:
select t.*,
(case when col1 = leastval then 'col1'
when col2 = leastval then 'col2'
when col3 = leastval then 'col3'
. . .
when col24 = leastval then 'col24'
end) as leastvalcol
from (select t.*,
least(col1, col2, . . . , col24) as leastval
from table t
) t;
在抱怨您需要的所有类型之前,您应该知道这个查询比它需要的复杂得多——因为您正在将内容存储在一行中,而该行应该位于一列中。您的表应该为每个小时值单独设置一行,而不是将所有每日值放在一行中。使用更规范化的结构,查询将更简单
编辑:
此表将包含以下列:
Date date,
Hour time, -- or int or varchar() depending on how you really want it captured
Value float
然后,查询可能如下所示:
select date, min(value) as minvalue,
substring_index(group_concat(hour order by value asc), ',', 1) as minhour
from newtable t
group by date;
首先,感谢大家的帮助 最后,我用PHP解决了这个问题,而不是操纵一个大的SQL语句 我使用函数actainArrayFromSQL创建数组,然后使用函数array_search()和min()作为大海捞针(数组)
函数获取ArrayFromSQL($arraySQL){
$array=array();
对于($i=1;$i<25;$i++)
{
数组推送($array,$data_day[$i.“h”]);
}
返回$array;
}
...
$index\u lower\u value=数组搜索(最小($array),$array);
谢谢大家 首先,感谢大家的帮助 最后,我用PHP解决了这个问题,而不是操纵一个大的SQL语句 我使用函数actainArrayFromSQL创建数组,然后使用函数array_search()和min()作为大海捞针(数组)
函数获取ArrayFromSQL($arraySQL){
$array=array();
对于($i=1;$i<25;$i++)
{
数组推送($array,$data_day[$i.“h”]);
}
返回$array;
}
...
$index\u lower\u value=数组搜索(最小($array),$array);
谢谢大家 首先,感谢大家的帮助 最后,我用PHP解决了这个问题,而不是操纵一个大的SQL语句 我使用函数actainArrayFromSQL创建数组,然后使用函数array_search()和min()作为大海捞针(数组)
函数获取ArrayFromSQL($arraySQL){
$array=array();
对于($i=1;$i<25;$i++)
{
数组推送($array,$data_day[$i.“h”]);
}
返回$array;
}
...
$index\u lower\u value=数组搜索(最小($array),$array);
谢谢大家 首先,感谢大家的帮助 最后,我用PHP解决了这个问题,而不是操纵一个大的SQL语句 我使用函数actainArrayFromSQL创建数组,然后使用函数array_search()和min()作为大海捞针(数组)
函数获取ArrayFromSQL($arraySQL){
$array=array();
对于($i=1;$i<25;$i++)
{
数组推送($array,$data_day[$i.“h”]);
}
返回$array;
}
...
$index\u lower\u value=数组搜索(最小($array),$array);
谢谢大家 您使用的是什么数据库?很高兴看到您已经尝试了什么。MySQL,使用MySQLi函数,我在SQL中编辑答案
MIN()
函数-tryit@Alexander他已经写了他试过了你在用什么数据库?很高兴看到你已经试过了。MySQL,使用MySQLi函数,我编辑答案MIN()
SQL中的函数-请尝试it@Alexa