Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Люди помогите сделать запрос из трех таблиц (StealtH) 19/08/2004 - 13:14:06
      Re: Люди помогите сделать запрос из трех таблиц (простохуй) 19/08/2004 - 15:32:47
      Re: Люди помогите сделать запрос из трех таблиц (StealtH) 19/08/2004 - 19:44:24
      Re: Люди помогите сделать запрос из трех таблиц (простохуй) 20/08/2004 - 10:39:21
      Re: Люди помогите сделать запрос из трех таблиц (StealtH) 20/08/2004 - 11:39:30
      Re: Люди помогите сделать запрос из трех таблиц (StealtH) 21/08/2004 - 03:49:45
      Re: Люди помогите сделать запрос из трех таблиц (простохуй) 23/08/2004 - 12:58:49
      Re: Люди помогите сделать запрос из трех таблиц (StealtH) 24/08/2004 - 01:28:42
      Re: Люди помогите сделать запрос из трех таблиц (простохуй) 24/08/2004 - 09:46:08
      Re: Люди помогите сделать запрос из трех таблиц (StealtH) 24/08/2004 - 13:32:26

> Original message text:
> From: StealtH - 19/08/2004 - 13:14:06
> Subject:Люди помогите сделать запрос из трех таблиц
> -----------------
> Вообщем такая ситуация:
> Есть две таблицы: RAZDEL(наименование разделов, поля: ID-идентификатор раздела, R_name-наименование, и другие в данной ситуации не имеющие значения), MESSAGE(сообщения, поля:ID-идентификатор, razdel - ID раздела, category-категория, hits-количество просмотров и др.).
> Есть запрос:
> $sql="SELECT razdel.ID, message.razdel, razdel.R_name, count(*) AS mcount, sum(message.hits) AS allsum
> FROM razdel LEFT JOIN message ON (message.razdel = razdel.ID)
> GROUP BY razdel.ID
> ORDER BY razdel.ID, razdel.R_name, mcount, allsum";,
> где R_name - имя раздела, mcount - количество мессаг, allsum - количество просмотров мессаг по конкретному разделу. Все замечательно, рульно работает.
> Теперь вводится изменение: удаляется поле hits, и создается таблица hits(таблица статистики просмотра мессаг, razdel - ID раздела, category, message - ID мессаги, data - дата просмотра, time - время, IP, и др.). Назначение - сбор статистики по просмотрам.
> Теперь сама задача, сделать запрос сразу к трем таблицам, чтобы выводились следующие данные, имя раздел(R_name), количество сообщений(mcount), количество просмотров(allsum), количество добавленных сообщений за текущий день(message_today), количество просмотров за текущий день(count_today). Пробовал ставить два добавлять переменные и счетчики(COUNT)и условия в секции ON, вывод данные по последнему условию, или вообще какую-то лажу:(
> Просьба помогите с данной траблой, посоветуйте как это сделать одним запросом, или если одним не получится, то несколькими, только чтоб результаты можно было обработать одним циклом.
>


From: простохуй - 24/08/2004 - 09:46:08
Subject:Люди помогите сделать запрос из трех таблиц
-----------------
ълять

mysql> create table razdel (ID int(10) unsigned not null auto_increment primary key, R_name varchar(30) not null);
Query OK, 0 rows affected (0.00 sec)

mysql> insert into razdel values (31,'transport');
Query OK, 1 row affected (0.00 sec)

mysql> insert into razdel values (34,'orgtech');
Query OK, 1 row affected (0.00 sec)

mysql> insert into razdel values (46,'raznoe');
Query OK, 1 row affected (0.00 sec)

mysql> create table message (ID int(10) unsigned not null auto_increment primary key, razdel int(10) unsigned not null, m_date date not null);
Query OK, 0 rows affected (0.00 sec)

mysql> insert into message values ('',34,'2004-08-20');
Query OK, 1 row affected (0.00 sec)

mysql> insert into message values ('',34,'2004-08-20');
Query OK, 1 row affected (0.00 sec)

mysql> insert into message values ('',34,'2004-08-20');
Query OK, 1 row affected (0.00 sec)

mysql> insert into message values ('',34,'2004-08-24');
Query OK, 1 row affected (0.00 sec)

mysql> insert into message values ('',34,'2004-08-24');
Query OK, 1 row affected (0.00 sec)

mysql> insert into message values ('',31,'2004-08-20');
Query OK, 1 row affected (0.00 sec)

mysql> insert into message values ('',31,'2004-08-20');
Query OK, 1 row affected (0.00 sec)

mysql> insert into message values ('',31,'2004-08-24');
Query OK, 1 row affected (0.00 sec)

mysql> create table hits (id int(10) unsigned not null auto_increment primary key, message int(10) unsigned not null, data date not null);
Query OK, 0 rows affected (0.00 sec)

mysql> insert into hits values ('',1,'2004-08-20');
Query OK, 1 row affected (0.00 sec)

mysql> insert into hits values ('',2,'2004-08-20');
Query OK, 1 row affected (0.00 sec)

mysql> insert into hits values ('',3,'2004-08-24');
Query OK, 1 row affected (0.00 sec)

mysql> insert into hits values ('',4,'2004-08-24');
Query OK, 1 row affected (0.00 sec)

mysql> insert into hits values ('',8,'2004-08-20');
Query OK, 1 row affected (0.00 sec)

mysql> select razdel.ID, razdel.R_name, count(message.razdel) message_count, count(hits.id) hits_count, sum(if(hits.data=curdate(),1,0)) hits_today, sum(if(message.m_date=curdate(),1,0)) message_today from razdel left join message on razdel.ID=message.razdel left join hits on message.id=hits.message group by razdel.ID order by razdel.ID;
+----+-----------+---------------+------------+------------+---------------+
| ID | R_name | message_count | hits_count | hits_today | message_today |
+----+-----------+---------------+------------+------------+---------------+
| 31 | transport | 3 | 1 | 0 | 1 |
| 34 | orgtech | 5 | 4 | 2 | 2 |
| 46 | raznoe | 0 | 0 | 0 | 0 |
+----+-----------+---------------+------------+------------+---------------+
3 rows in set (0.00 sec)



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
16786



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |