Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Многотабличный запрос с группировкой по дате

Сообщения:  [1-5] 

 
 автор: Trianon   (06.01.2007 в 23:21)   письмо автору
 
   для: Граон   (06.01.2007 в 16:22)
 

Как-то так... Хотя и изврат редкостный.

SELECT dat, sum(usr), sum(odr) FROM 
(  SELECT COALESCE(DateRegister, DateOrder) as dat, UserID is NOT NULL as usr,  OrderID is NOT NULL as odr 
   FROM tblUser OUTER JOIN tblOrder ON   DateRegister=DateOrder) AS tb
GROUP BY dat

   
 
 автор: Евгений Петров   (06.01.2007 в 22:41)   письмо автору
 
   для: Граон   (06.01.2007 в 21:02)
 

Что то сдается мне, что одним запросом никак...
Проще всего сначала вычислять например сколько было заказов по дням, а потом сколько юзеров а потом обьединить эти два результата при помощи пхп. Например так:
<?
    mysql_connect
("localhost""root""");
    
mysql_select_db("test");

    
$orders = array();
    
$users = array();

    
$query mysql_query("SELECT dateOrder as date, COUNT(orderID) as orders FROM tblorder GROUP BY dateOrder");
    while(
$fetch mysql_fetch_assoc($query)) { $orders[] = $fetch; }

    
$query mysql_query("SELECT dateRegister as `date`, COUNT(userID) as `users` FROM tbluser GROUP BY dateRegister");
    while(
$fetch mysql_fetch_assoc($query)) { $users[] = $fetch; }

    
$tmp array_merge($orders$users);

    
$result = array();

    for(
$i 0$i count($tmp); $i++)
    {
        if(isset(
$tmp[$i]['orders']))
        {
            
$result[$tmp[$i]['date']]['orders'] = intval($tmp[$i]['orders']);
        }
        else
        {
            
$result[$tmp[$i]['date']]['users'] = intval($tmp[$i]['users']);
        }
    }

    echo 
"<table border=\"1\">";
    echo 
"<tr><td><b>Дата</b></td><td><b>Заказы</b></td><td><b>Пользователи</b></td></tr>";
    foreach(
$result as $date => $stat)
    {
        echo 
"<tr><td>{$date}</td><td>".intval($stat['orders'])."</td><td>".intval($stat['users'])."</td></tr>";
    }
    echo 
"</table>";
?>

   
 
 автор: Граон   (06.01.2007 в 21:02)   письмо автору
 
   для: Евгений Петров   (06.01.2007 в 16:28)
 

Дамп выложен.

   
 
 автор: Евгений Петров   (06.01.2007 в 16:28)   письмо автору
 
   для: Граон   (06.01.2007 в 16:22)
 

Выложите дамп, чтобы было на чем проверить

   
 
 автор: Граон   (06.01.2007 в 16:22)   письмо автору
 
 

Вообщем, помогите кто с запросиком к БД!
Есть таблички


tblUser: - таблица содержит пользователей и дату их регистрации
UserID (Формат INT)
DateRegister (Формат Date)

tblOrder: - таблица содержит заказы на пользователей и дату заказа
OrderID(INT)
UserID(INT)
DateOrder(Date)


Нужно сформировать отчет который бы выглядил так:
Дата Число зарегестрированных юзеров Число заказов на юзеров
01.02.2007 12 6
02.02.2007 10 5

Вообщем группировка по Дате, как для одной таблицы сделать это я знаю а вот как для двух?

   

Сообщения:  [1-5] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования