2016-04-02 2 views
0

Я хочу получить отчет, как это, из моих таблиц базы данных.Создать отчет через php

report

Вещи следует учитывать при создании отчета являются:

  1. отчет будет генерировать на основе выбранной даты.
  2. две базы данных и две таблицы (уже присоединился) «салон» и «клиент»

  3. салон имеют showroom_name и каждый относили записи в клиент
    таблицы. В каждом выставочном зале может быть несколько запросов клиентов в каждый день.

  4. В течение одного дня может быть запрошено количество запросов от каждого выставочного зала.

  5. Предположим, если в первый день месяца будут отображаться 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 

результат запроса

query result

Какой я был отмечен двумя данные имеют две разные даты. 2016-02-09 и 2016-02-23. '356' - выставочный зал, поэтому 9-й день в столбце отчета становится 1-й и 23-й колоннами. 1. Надеюсь, вы получите мою мысль. Как я могу подсчитать количество номеров в каждом автосалоне?

У него есть фрагмент кода, который я пишу до сих пор. не знаю, чтобы написать потом

<?php 

echo $row->showroom_name; 

$conn = mysql_connect('localhost', 'root', '[email protected]') 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, added_by, status_id, location_id, cu_nic, cu_age, cu_occ, cu_land, 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, manager_mobile, manager_id, shop_email, shop_phone, shop_fax, showroom_type, added_date , last_update, added_by, status_id, level_id

спасибо.

+0

если предоставить SQL скрипку с вашим вопросом, что легче для нас, чтобы попробовать материал: http://sqlfiddle.com/ – Jester

+0

Добавить дату вашего предложения ORDER BY , Остальное будет сделано в PHP. – Strawberry

ответ

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, не может быть neccesary

Смежные вопросы