|
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 - 24/08/2004 - 01:28:42
Subject:Люди помогите сделать запрос из трех таблиц
-----------------
Попробовал, ситуация как в злом анекдоте, запрос считает hits_count и message_count одинаково:(, в чем весь прикол, когда мессаг больше, то все нормально, но когда их меньше, то запрос выводит одинаковы результаты для выше перечисленных полей, попробовал изменить зависимость таблиц - история еще ужаснее, выводит ваще неимоверные числа, начинаю убирать некоторые поля типа(hits_count и message_count), тогда нормально, но при этом весь смысл запроса пропадает. Если все-таки еще интересно "добить" этот запрос, вот моя ася 157358863.
Сейчас разобрался и понял, почему это все происходит, когда условие стоящее в секции ON команды LEFT JOIN возвращает TRUE, то наращиваются два COUNT'a причем все проходит нормально, но когда начинает считать данные из таблицы хитов, то одновременно захватывает и мессаги, поэтому их количество в данном случае и получается одинаковым. Как с этим багом бороться ума не приложу, прийдется чуть переделывать таблицы, и добавлять поле с количеством мессаг прямо в таблицу разделов, и когда будет добавлено новое сообщение, одновременно наращивать это поле, а вывести его в этом запросе можно запросто. Метод хреновый, но работать будет стопудово.
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
16786
|
|