我想从我的数据库表中获取这样的报告。
在撰写报告时应考虑的事项:
两个数据库和两个表(已加入)'陈列室'和'客户'
陈列室有陈列室名称,每个陈列室都有客户的相关记录 表。一个展厅每天可能会有几个客户询问。
在一天之内可能会有来自每个展厅的询问。
假设一个月的第一天5个查询应该出现 在日期栏下面和特定展厅名称前面。
我从两个表中选择数据的查询工作正常。
SELECT
abans_crm.customers.added_date,
abans_crm.customers.location_id
FROM
abans_crm.customers
INNER JOIN sh_sso.showrooms ON sh_sso.showrooms.showroom_id = abans_crm.customers.location_id
WHERE
abans_crm.customers.added_location = -99 AND
abans_crm.customers.type_id = 1
ORDER BY
abans_crm.customers.location_id ASC
查询结果
我标记的两个数据有两个不同的日期。 2016-02-09和2016-02-23。 '356'是showroom_id,因此报告的第9天列成为1,第23列成为1.希望你明白我的观点。我如何计算每个展厅的询问数量?
到目前为止我写的代码片段。不知道后来写的
<?php
echo $row->showroom_name;
$conn = mysql_connect('localhost', 'root', 'Sate11it@') or die("Unable to connect to MySQL");
mysql_select_db('sh_sso', $conn);
mysql_select_db('abans_crm', $conn);
$query_3 = "SELECT
abans_crm.customers.added_date,
abans_crm.customers.location_id
FROM
abans_crm.customers
INNER JOIN sh_sso.showrooms
ON sh_sso.showrooms.showroom_id = abans_crm.customers.location_id
WHERE
abans_crm.customers.added_location = -99 AND
abans_crm.customers.type_id = 1
ORDER BY
abans_crm.customers.location_id ASC";
$retval = mysql_query($query_3);
if(!$retval ) {
die('Could not get data: ' . mysql_error());
}
$select_month = '2';
$select_year = '2016';
$days = cal_days_in_month(CAL_GREGORIAN,$select_month,$select_year);
while ($row2 = mysql_fetch_assoc($retval)){
$year = date('Y',strtotime($row2['added_date']));
$month = date('m',strtotime($row2['added_date']));
$date = date('m',strtotime($row2['added_date']));
$showroom_id = $row2['location_id'];
if($year == $select_year && $month == $select_month){
for($a = 1; $a <= $days; $a++){
echo "<td id=".$a.">".$count."</td>";
}
}
}
?>
如果您需要更多详细信息,请在下方发表评论。
客户表字段
cu_id
,cu_name
,cu_email
,cu_address
,cu_phone
,cu_remark
,added_date
,last_update
,{{ 1}},added_by
,status_id
,location_id
,cu_nic
,cu_age
,cu_occ
,cu_land
,{{1} },purchase_type
,pref_model
,pref_color
,oth_model
,purchase_date
,currenrt_bike
,bike_year
,att_by
, cu_made
,about_hero
,source_id
,added_ip
,dealer_flag
,added_location
,cur_milage
陈列室表格字段
cat_id
,type_id
,showroom_id
,showroom_code
,showroom_name
,showroom_address
,address_city
,manager_name
,{{ 1}},manager_mobile
,manager_id
,shop_email
,shop_phone
,shop_fax
,showroom_type
,added_date
,{{1} }
谢谢。
答案 0 :(得分:0)
我认为这应该可以解决问题:
SELECT DATE(abans_crm.customers.added_date) AS new_added_date
COUNT(DATE(abans_crm.customers.added_date)) AS customer_amount,
abans_crm.customers.location_id
FROM abans_crm.customers
INNER JOIN sh_sso.showrooms ON sh_sso.showrooms.showroom_id = abans_crm.customers.location_id
WHERE abans_crm.customers.added_location = -99
AND abans_crm.customers.type_id = 1
GROUP BY abans_crm.customers.location_id, new_added_date
ORDER BY abans_crm.customers.location_id ASC, new_added_date ASC
我们使用DATE
仅获取年,月,日部分。
然后我们GROUP BY
同时location_id
以及new_added_date
,这样结果只会在年,月和日相同时进行分组。
我还在ORDER BY
上添加了new_added_date
,可能不是必需的