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

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

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2009, 22:58   #1
evgenrpo
Пользователь
 
Регистрация: 31.05.2009
Сообщений: 71
По умолчанию Как подсчитать количество совпадений в таблице? MySQL

Мне надо подсчитать количество совпадений и записать в переменую
Код:
$resul = mysql_query("SELECT COUNT(_name) FROM table_name WHERE _name = '$_name'");
  $row = mysql_fetch_array($resul);
в $resul нада записать интовое число (Количество)

Последний раз редактировалось mihali4; 14.12.2009 в 14:02.
evgenrpo вне форума Ответить с цитированием
Старый 13.12.2009, 23:07   #2
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

Код:
$resul = mysql_query("SELECT _name FROM table_name WHERE _name = '$_name'");
$result = mysql_num_rows($resul);
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Старый 13.12.2009, 23:39   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а так разве не лучше?
Код:
$resul = mysql_query("SELECT COUNT(_name) as CNT FROM table_name WHERE _name = '$_name'");
$row = mysql_fetch_array($resul);
$result = $row[CNT]
p.s. код не проверял, с php сталкивался давно, пишу по памяти, поэтому могу ошибаться...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.12.2009, 12:18   #4
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

бред...
Можно так: $result = count($row); Но возможны ошибки и проблемы.
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Старый 14.12.2009, 12:19   #5
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

как вариант - можно произвести выборку, а потом сделать mysql_affected_rows
SkyM@n вне форума Ответить с цитированием
Старый 14.12.2009, 13:48   #6
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Цитата:
Сообщение от spein Посмотреть сообщение
бред...
это -
Код:
"SELECT COUNT(_name) as CNT FROM table_name WHERE _name = '$_name'"
бред?

вот это -
Код:
"SELECT _name FROM table_name WHERE _name = '$_name'"
бред
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 14.12.2009, 13:58   #7
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

обоснуй. Может я чего-то не понимаю
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Старый 14.12.2009, 15:23   #8
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Цитата:
Сообщение от spein Посмотреть сообщение
обоснуй. Может я чего-то не понимаю
"SELECT COUNT(_name) as CNT FROM table_name WHERE _name = '$_name'" - этот запрос вернёт число строк в которых "есть равенство", например 1 678 352,
"SELECT _name FROM table_name WHERE _name = '$_name'" - вернёт 1 678 352 строковых значений, те минимум 1 678 352 байт информации.

То что выберет БД попадёт в оперативную память, во втором случае туда попадет ненужная нам информация.
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 14.12.2009, 15:24   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я могу обосновать.
когда я говорил, что могу ошибаться, я имел в виде не ошибку в SQL запросе или его (SQL запроса) неэффективность.
я говорил о том, что не точно помню синтаксис, как на PHP в переменную записать поле из результирующей выборки. при этом я на 95% уверен, что мой код не сильно ошибочен...

а теперь по сути:
"SELECT _name FROM table_name WHERE _name = '$_name'"
вернёт столько строчек, сколько записей в таблице сооотвествует выборке. Таким образом на клиента будет передана огромная (в частном случае) масса НЕНУЖНОЙ информации! попробуйте НА ЛЮБОЙ SQL сервере на таблице из нескольких тысяч (хотя бы) записей написать select * from Table - не устанете ждать результата?!
а теперь там же выполните select count(*) from Table
этот запрос отработает МГНОВЕННО, даже если у Вас базе сотни тысяч записей. Потому как сервер сообщит Вам ОДНО РЕЗУЛЬТИРУЮЩЕЕ ЧИСЛО!

так вот, а запрос
"SELECT COUNT(_name) as CNT FROM table_name WHERE _name = '$_name'"
вернёт ОДНУ СТРОКУ с ОДНИМ числом.
(правда, разные СУБД по разному выполняют выборки из пустой таблицы, поэтому я бы ещё проверил rows на предмет > 0)
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет количества совпадений в таблице aval Microsoft Office Excel 8 08.11.2009 21:50
Как подсчитать количество записей в списке Grisha248 Помощь студентам 2 23.06.2009 10:43
Подсчитать количество шагов MAKEDON Помощь студентам 3 02.06.2009 15:04
Помогите подсчитать количество дней komar73 Microsoft Office Excel 2 09.02.2009 09:54
Как подсчитать количество уникальных мест? Iskin Microsoft Office Excel 2 05.12.2008 11:44