|
|
|
| Нужно сделать функцию отображения количества сообщений - общее/непрочитанные
поля в таблице
`email` `red`
нужно узнать сколько red =1 и сколько red=0 в записях где email = 'adres1@server.com'
крутил вертел по всякому - не осилил | |
|
|
|
|
|
|
|
для: skinny
(08.06.2011 в 23:54)
| |
SELECT COUNT(*) AS kolichestvo FROM table WHERE red = 0 AND email = 'adres1@server.com'
это для отображения прочтенных как понимаю
SELECT COUNT(*) kolichestvo FROM table WHERE red = 1 AND email = 'adres1@server.com'
непрочтенных
|
не забудь проставить индексы к стобцам red и email | |
|
|
|
|
|
|
|
для: Ильдар
(09.06.2011 в 00:15)
| | да собственно задача была как выдтащить их 1 запросом
2 я и сам умею :)
это даже чисто для теории интересно.
и тут походу немного изменилось условие
я с начала просто не понял
нужно отобразить количество всех сообщений пользователя и из них сколько непрочтённых
вопщем там где red =0 такие ненужны, нужны просто
SELECT COUNT(*) AS kolichestvo FROM table WHERE email = 'adres1@server.com'
это для отображения прочтенных как понимаю
SELECT COUNT(*) kolichestvo FROM table WHERE red = 1 AND email = 'adres1@server.com'
непрочтенных
|
| |
|
|
|
|
|
|
|
для: Ильдар
(09.06.2011 в 00:15)
| |
SELECT (SELECT COUNT(*) FROM table WHERE red = 0 AND email = 'adres1@server.com') AS prochitano
(SELECT COUNT(*) FROM table WHERE red = 1 AND email = 'adres1@server.com') AS neprochitano
|
| |
|
|
|
|
|
|
|
для: Ильдар
(09.06.2011 в 00:23)
| | еще можно с помощью LEFT JOIN | |
|
|
|
|
|
|
|
для: Ильдар
(09.06.2011 в 00:25)
| | интересно как теоретически такой запрос будет выполняться по времени
SELECT (SELECT COUNT(*) FROM table WHERE red = 0 AND email = 'adres1@server.com') AS prochitano
(SELECT COUNT(*) FROM table WHERE red = 1 AND email = 'adres1@server.com') AS neprochitano
|
быстрее или медленнее чем те 2 ?
ща потестю | |
|
|
|
|
|
|
|
для: skinny
(09.06.2011 в 00:29)
| | если работать с 1 записью то почти одинаково.
подожду заполнения базы и если что перепишу. | |
|
|
|
|
|
|
|
для: skinny
(09.06.2011 в 00:39)
| | Одинаково будет, потому что запрос в итоге один и тот же - двойной, просто выаолняется одним запросом. | |
|
|
|
|
|
|
|
для: Ильдар
(09.06.2011 в 11:54)
| | а вообще, вот идеальный вариант для тебя я думаю
SELECT COUNT(IF(red=0,news_public,NULL)) AS yes, COUNT(IF(red=1,news_public,NULL)) AS no FROM table WHERE email = 'adres1@server.com'
|
| |
|
|
|