Новости
Документация
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: StealtH - 21/08/2004 - 03:49:45
Subject:Люди помогите сделать запрос из трех таблиц
-----------------
Вродь работает запрос, но только опять косячок:(, во время его исполнения запрос несколько раз проходится по таблицам и результаты пересчитывает несколько раз. Вообщем подробнее
Запрос:
SELECT razdel.ID, razdel.R_name, COUNT(message.razdel) message_count, COUNT(hits.id) hits_count,
SUM(IF(hits.date=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.razdel=hits.razdel
GROUP BY razdel.ID ORDER BY razdel.ID

А вот его результаты:
ID R_name message_count hits_count hits_today message_today
-- ------ ------------- ---------- ---------- -------------
30 Недвижимость 1 0 0 0
31 Транспрорт 3 3 3 0
32 Оборудование 1 0 0 0
33 Стройматериалы 0 0 0 0
34 Оргтехника 20 20 20 4
35 Бытовая техника 1 0 0 0
36 Мебель 1 0 0 0
37 Продукты 0 0 0 0
38 Гардероб, предметы обихода 0 0 0 0
39 Услуги 0 0 0 0
40 Работа 0 0 0 0
41 Сообщения 0 0 0 0
42 Знакомства 0 0 0 0
43 Досуг 0 0 0 0
44 Животные 0 0 0 0
45 Растения 0 0 0 0
46 Разное 0 0 0 0

(17 row(s) affected)
--------------------------------------
Так весь прикол в том, что в таблице hits всего пять записей, 4-е из них со значением поля razdel=34, и одна razdel=31, соответственно в разделе(34) 5 записей, в разделе(31) - 3.

вот то что было до этого
Запрос:
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
результаты:
ID razdel R_name mcount allsum
-- ------ ------ ------ ------
30 30 Недвижимость 1 7
31 31 Транспрорт 3 3
32 32 Оборудование 1 3
33 NULL Стройматериалы 1 NULL
34 34 Оргтехника 5 30
35 35 Бытовая техника 1 0
36 36 Мебель 1 0
37 NULL Продукты 1 NULL
38 NULL Гардероб, предметы обихода 1 NULL
39 NULL Услуги 1 NULL
40 NULL Работа 1 NULL
41 NULL Сообщения 1 NULL
42 NULL Знакомства 1 NULL
43 NULL Досуг 1 NULL
44 NULL Животные 1 NULL
45 NULL Растения 1 NULL
46 NULL Разное 1 NULL
------------------------------------------
поля message.hits в настоящее время уже нет.
Что делать даже ума не приложу, уже второй день над всем этим "бьюсь" и никакого результата:(


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

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

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



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