[英]PHP: Parse all data from mysql where the 3rd and 4th digit of the id
我有一个带有一些奇怪ID的mysql表,如下所示:
╔═══╦════════════╦═════════════╦═══════════╦═════════════╦═══════════╗
║ ║ id ║ user_id ║ hours_a ║ hours_b ║ hours_c ║
╠═══╬════════════╬═════════════╬═══════════╬═════════════╬═══════════╣
║ 1 ║ 010120149 ║ 9 ║ 10 ║ 6 ║ 23 ║
║ 2 ║ 0212201310 ║ 10 ║ 2 ║ 8 ║ 10 ║
║ 3 ║ 021220138 ║ 8 ║ 1 ║ 4 ║ 9 ║
║ 4 ║ 020120149 ║ 9 ║ 3 ║ 8 ║ 10 ║
╚═══╩════════════╩═════════════╩═══════════╩═════════════╩═══════════╝
我试图解析用户ID 9的总时间,即2014年1月和2014年。从表中可以看到,这是第一行和最后一行。
例如, 01 01 2014 9
是第一行的ID,代表DD / MM / YYYY / ID 。
我希望能够检索user_id = 9的所有小时数( 分别为hours_a,hours_b和hours_c),其中day = 01-31(循环遍历所有天?), month = 01和year = 2014 。
要以这样的方式导出:
{"userid":"9","month":"01","year":"2014","total_hours_a":"13","total_hours_b":"14","total_hours_c":"33"}
该ID分别代表Day,Month,Year和Userid:
目前,我正在选择所有表格:
$query="SELECT * FROM `weird_table` WHERE `id` LIKE 9";
将其打印到编码的json:
$result = mysql_query($query);
$temp = 0;
$json = array();
while ($row = mysql_fetch_array($result))
{
$json[$temp]['id'] = $row['id'];
$json[$temp]['userid'] = $row['userid'];
$json[$temp]['hours_a'] = $row['hours_a'];
$json[$temp]['hours_b'] = $row['hours_b'];
$json[$temp]['hours_c'] = $row['hours_c'];
}
$temp++;
}
print json_encode($json);
mysql_close();
然后在客户端(因为我是前端开发人员),我将其匹配并相加并求和,以获得所需的结果。 不必为所有这些麻烦工作而给用户带来太多的CPU痛苦; 我希望服务器进行工作并准确地向我打印我正在寻找的内容。
尝试这个:
SELECT *, (hours_a + hours_b + hours_c) totalHours
FROM weird_table
WHERE user_id = 9 AND
STR_TO_DATE(SUBSTRING(id, 1, 8), '%d%m%Y') BETWEEN '2014-01-01' AND '2014-01-31'
要么
SELECT *, (hours_a + hours_b + hours_c) totalHours
FROM weird_table
WHERE user_id = 9 AND SUBSTRING(id, 3, 6) = '012014'
要么
SELECT *, (hours_a + hours_b + hours_c) totalHours
FROM weird_table
WHERE user_id = 9 AND
YEAR(STR_TO_DATE(SUBSTRING(id, 1, 8), '%d%m%Y')) = 2014 AND
MONTH(STR_TO_DATE(SUBSTRING(id, 1, 8), '%d%m%Y')) = 1
你可以试试这个
select userid,SUBSTRING(id, 3, 2) ,SUBSTRING(id, 5, 4),hours_a,hours_b, hours_c
FROM weird_table
WHERE userid = 9 AND SUBSTRING('010120149', 3, 6) = '012014';
并且检索的行小时值可以简单地相加。
通过使用服务器的CPU,对我来说,PHP也在服务器上运行,因此我将通过PHP脚本来完成工作。
首先将ID拆分为MM,DD,YYYY,然后使用其填充Sum-Array。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.