我的表格如下:
year | url | view
-------------------------------
2016 | /document/item.pdf | 21
2015 | /document/item.pdf | 35
2014 | /document/item.pdf | 41
我希望构建另一个表格如下:
url | 2014 | 2015 | 2016
---------------------------------------
/document/item.pdf | 41 | 35 | 21
我现在真的不怎么写我的mysql查询来做到这一点。 谢谢你的帮助:)
答案 0 :(得分:1)
查询第一个表到PHP数组的所有数据,数组如下:
$data = [[2016, "/document/item.pdf", 21],
[2015, "/document/item.pdf", 35],
[2014, "/document/item.pdf", 41]];
遍历$data
,创建另一个关联数组$result
,其键是url,value是包含年份和视图的数据数组:
$result = array();
foreach ($data as $value) {
$result[$value['url']][$value['year']] = $value['view'];
}
遍历新数组,并将数据写回MySQL
答案 1 :(得分:1)
你可以试试这个:
SELECT url,
MAX(IF(`year` = 2014 , view, NULL)) '2014',
MAX(IF(`year` = 2015, view, NULL)) '2015',
MAX(IF(`year` = 2016, view, NULL)) '2016'
FROM pub
GROUP BY url
答案 2 :(得分:0)
你必须制作两张桌子 - >首先保存文件,第二个保存访问 像这样
文件表
url_id | url
------------------------
1 |/document/item.pdf
2 |/document/item.pdf
访问表(url_id)是文件表中的forign键
url_id | time
---------------
1 | 987907872
2 | 987907872
2 | 987978272
2 | 987907872
2 | 987907872
1 | 987907872
1 | 987907872
1 | 987907872
========================
然后您可以按年访问表格查看每个网址的访问次数
答案 3 :(得分:0)
可能会帮助你
SELECT
url,
sum( if( year= '2014', view, 0 ) ) AS 2014,
sum( if( year= '2015', view, 0 ) ) AS 2015,
sum( if( year= '2016', view, 0 ) ) AS 2016
FROM
pub
GROUP BY
url;