我想显示我的数据从数据库到图表,在这里我使用谷歌图表。
问题是,当我计数并联接表时,当两个表的日期不同时,数据就不显示了。
例如,我有这样的数据。
表1
date(table1) sh_sh
--------- ------------
2018-04-25 data1
2018-04-26 data2
2018-04-27 data3
表2
date(table2) ip
--------- ------------
2018-04-28 data1
2018-04-25 data2
2018-04-24 data3
我运行这样的代码,我从我的问题之前得到的代码
SELECT urls.date, urls.count AS sh_count, ip.count AS ip_count FROM
(SELECT date(date) AS date, COUNT(*) AS count FROM table1 GROUP BY date(date)) AS urls JOIN
(SELECT date(date) AS date, COUNT(*) AS count FROM table2 GROUP BY date(date)) AS ip ON urls.date = ip.date
输出为
date(url) count(sh_sh) count(ip)
--------- ------------ ----------
2018-04-25 1 1
日期24,26,27,28未出现,原因是日期不同。
我要做的是,用不同的表和日期显示数据。
当没有数据时,我想打印0。
这是我的图表脚本
<script type="text/javascript">
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Date', 'Urls', 'Clicks'],
<?php
while ($areacharts = $areachart->fetch()) {
echo "['".$areacharts['date']."',".$areacharts['sh_count'].",".$areacharts['ip_count']."],";
} ?>
]);
var options = {
hAxis: {title: 'Date', titleTextStyle: {color: '#333'}},
vAxis: {minValue: 0}
};
var chart = new google.visualization.AreaChart(document.getElementById('summary_chart'));
chart.draw(data, options);
}
$(window).resize(function(){
drawChart();
});
</script>
2条答案
按热度按时间a6b3iqyw1#
这个呢:
它不是很漂亮,但应该有用。
使用相同的数据,应返回:
另外,请不要将日期字段命名为“日期”。这是个保留字。。。您不想对字段名使用保留字!这会管用的,别误会,但这是非常非常糟糕的做法!
um6iljoc2#
使用
UNION ALL
把两个结果结合起来,然后再去约会,
像这样的。。。