Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2012, 10:26   #1
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию Количество коментариев за сегодня

Есть несколько таблиц MySQL

t1 ___ - новости
id
date
.....

t2 ___ - коментарии
id
id_news - к какой новости принадлежит
date

задача: кроме списка новостей, вывести так же общее количество каментов и каментов именно за сегодня

делаю так

Код:
SELECT t1.*, COUNT(t2) AS cnt1, COUNT(t3) AS cnt2
FROM t1 
LEFT JOIN t1 ON t1.id=t2.id_news
LEFT JOIN t2 AS t3 ON (t1.id=t3.id_news AND t3.date=TODAY())
GROUP BY t1.id
Если к новости нет сегодня каментов - верно выдает и количество общее и 0 сегодняшних
Если к новости сегодня есть каменты - выдает общее кол-во каментов * 2, и сегодняшних кажет = общие*2
что неверно сделал
ADSoft вне форума Ответить с цитированием
Старый 10.02.2012, 10:41   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
SELECT t1.*,COUNT(t2) AS cnt1,
    SUM(CASE WHEN t2.date=TODAY() THEN 1 ELSE 0 END) AS cnt2
  FROM t1
    LEFT JOIN t2 ON t2.id_news=t1.id
  GROUP BY t1.id
Всегда удивляет эта спосолбность MySQL так лихо к GROUP BY и списком SELECT обходиться
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.02.2012, 11:04   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

блин... надо же ... такой вариант тоже делал.... тока со вторым JOIN
точно... же так проще
Спасибо.... тока так сделал
Код:
SUM(IF(t2.date=TODAY()),1,0))
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно помочь в обьяснении всех строк типа коментариев"//" anton6262906 Помощь студентам 0 21.12.2011 21:48
Задана последовательность чисел в формате:сначала количество цифр в числе, потом - цифры числа. Подсчитать количество. Arn1 Помощь студентам 4 03.10.2011 20:03
Подсчитать количество слов и количество букв MDSIQ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 13.11.2010 16:57
количество цифр и количество символов до первой гласной буквы 111111 Общие вопросы C/C++ 2 22.12.2008 12:15
Скрипт коментариев igoist Помощь студентам 0 02.11.2008 16:29