Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: сосчитать особые строки.
 
 автор: 10100100   (30.11.2005 в 17:23)   письмо автору
 
 

В общем нужно сосчитать строки в которых было бы введено определённое значение...
например есть таблица:


CREATE TABLE 'soob' (
'id_soob' INT NOT NULL AUTO_INCREMENT ,
'name' TINYTEXT,
'email' TINYTEXT,
'homepage' TINYTEXT,
'gorod' TINYTEXT,
'soob' TINYTEXT,
'comment' TINYTEXT,
'time' DATETIME DEFAULT NULL ,
PRIMARY KEY (id_soob)
) TYPE = MYISAM;


и нужно сосчитать колличество допустим Емалов одинаковых(!) вот....

   
 
 автор: codexomega   (30.11.2005 в 20:54)   письмо автору
 
   для: 10100100   (30.11.2005 в 17:23)
 


SELECT COUNT(email)
FROM soob;


Для уникальных значений:

SELECT COUNT(DISTINCT email)
FROM  soob;

   
 
 автор: 10100100   (02.12.2005 в 05:43)   письмо автору
 
   для: codexomega   (30.11.2005 в 20:54)
 

а можно примеры расшифровать поподробнее...

   
 
 автор: codexomega   (02.12.2005 в 06:43)   письмо автору
 
   для: 10100100   (02.12.2005 в 05:43)
 

Ну, первое выдает общее число полей с емэйлом.
А второе - число уникальных емэйлов, т.е которые не повторяются.

   
 
 автор: 10100100   (02.12.2005 в 09:08)   письмо автору
 
   для: codexomega   (02.12.2005 в 06:43)
 

гыксь, ну енто т опонятно, а что конкретно значит ДИСТРИКТ?
и получается вместо "email" нужно будет писать нужное значение?

   
 
 автор: cheops   (02.12.2005 в 13:38)   письмо автору
 
   для: 10100100   (02.12.2005 в 09:08)
 

Ключевое слово DISTINCT - означает выбрать уникальные значения столбца.

   
 
 автор: 10100100   (02.12.2005 в 14:14)   письмо автору
 
   для: 10100100   (30.11.2005 в 17:23)
 

хм, пожалуй следует немного уточнить...
У меня есть cms у каждой новости рядом есть кнопка "комментарии[]" и мне нужно чтобы в квадратных скобочках было колличество комментариев к каждой статье. на странице примерно 20 новостей...

   
 
 автор: codexomega   (03.12.2005 в 06:44)   письмо автору
 
   для: 10100100   (02.12.2005 в 14:14)
 

Тогда вам еще придется использовать условие WHERE.
Что-то типа этого:

SELECT COUNT(comment) FROM soob WHERE ...

Подождите, а новости где находятся? В отдельной таблице?
Что то не пойму структуру...А где статьи?

   
 
 автор: 10100100   (03.12.2005 в 08:29)   письмо автору
 
   для: codexomega   (03.12.2005 в 06:44)
 

корочс структура вот она...

CREATE TABLE 'cms' (
'id_news' INT NOT NULL AUTO_INCREMENT,
'name_new' TINYTEXT,
'pred_new' TINYTEXT,
'all_new' TINYTEXT,
'time' DATETIME DEFAULT NULL ,
PRIMARY KEY (id_news)
) TYPE = MYISAM;

CREATE TABLE 'comments' (
'id_comments' INT NOT NULL AUTO_INCREMENT,
'id_news' TINYTEXT,
'name' TINYTEXT,
'comment' TINYTEXT DEFAULT NULL,
'time' DATETIME DEFAULT NULL ,
PRIMARY KEY (id_comments)
) TYPE = MYISAM;


вот я и ломаю себе голову в догадках, по идее я тож думал что тут where понадобится но чтото вот начал сомневаться.... потому как с where срабатывает только если мы учитываем только какую либо одну новость. а когда со всеми сразу он просто считает все ВООБЩЕ столбцы а нам нужно разбить все эти комменты по id_news

   
 
 автор: codexomega   (03.12.2005 в 22:07)   письмо автору
 
   для: 10100100   (03.12.2005 в 08:29)
 

У меня есть cms у каждой новости рядом есть кнопка "комментарии[]" и мне нужно чтобы в квадратных скобочках было колличество комментариев к каждой статье.

Не знаю, что то до меня не доходит...
Ну ладно, попробуем:


SELECT COUNT(comment) FROM comments, cms  WHERE comments.id_news = cms.id_news;

   
 
 автор: 10100100   (04.12.2005 в 15:38)   письмо автору
 
   для: codexomega   (03.12.2005 в 22:07)
 

о, начинаю понимать...
в принципе вариант, но даж и не знаю, надо попробовать... а что конкретно значит вот это?

COUNT(comment)

   
 
 автор: codexomega   (04.12.2005 в 18:23)   письмо автору
 
   для: 10100100   (04.12.2005 в 15:38)
 

Дословно означает: Посчитай комментарии.
COUNT = считать.

   
 
 автор: cheops   (05.12.2005 в 02:44)   письмо автору
 
   для: 10100100   (04.12.2005 в 15:38)
 

Добавлю лишь, что COUNT() - это внутренняя функция MySQL - вообще MySQL обладает большим набором функций, некоторые из которых превосходят по функциональности PHP (например битовые функции или функции для работы с датой).

   
 
 автор: 10100100   (07.12.2005 в 16:05)   письмо автору
 
   для: cheops   (05.12.2005 в 02:44)
 

короч я разобрался - то что мне нужно с родни функции вашего форума - функция подсчёта оставленных сообщений! каким образом Вы это делаете Игорь Вячеславович!?

   
 
 автор: cheops   (07.12.2005 в 16:35)   письмо автору
 
   для: 10100100   (07.12.2005 в 16:05)
 

При помощи функции COUNT()... только в запросе ставится условие, которое выбирает только те записи, которые помечены датой большей даты последнего посещения пользователя.
SELECT COUNT(*) FROM tbl WHERE putdate > '$last_date'

   
 
 автор: 10100100   (07.12.2005 в 18:28)   письмо автору
 
   для: cheops   (07.12.2005 в 16:35)
 

а как он подсчитывает именно к нужной теме сообщения? всё тем же запросом?

   
 
 автор: cheops   (08.12.2005 в 01:05)   письмо автору
 
   для: 10100100   (07.12.2005 в 18:28)
 

Да только добавляются ещё условия, например если тема имеет идентификатор id_theme = 45, то запрос может выглядеть следующим образом
SELECT COUNT(*) FROM tbl WHERE putdate > '$last_date' AND id_theme = 45

   
 
 автор: 10100100   (08.12.2005 в 07:25)   письмо автору
 
   для: cheops   (08.12.2005 в 01:05)
 

хм, ну это то понятно, но вот вопрос, на странице то не одна тема а целая куча!

   
 
 автор: cheops   (08.12.2005 в 12:39)   письмо автору
 
   для: 10100100   (08.12.2005 в 07:25)
 

Здесь в дело вступает либо цикл, либо ключевое слово GROUP BY
SELECT id_theme, COUNT(*) FROM tbl WHERE putdate > '$last_date' GROUP BY id_theme

Этот оператор вернёт число строк, соответствующих числу уникальных значений id_theme, причём COUNT(*) посчитает число строк для каждого id_theme.

   
 
 автор: 10100100   (08.12.2005 в 17:29)   письмо автору
 
   для: cheops   (08.12.2005 в 12:39)
 

ой блин - мне уже страшно, теперь даже не знаю с чего начать.. :))))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования