Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Количество выбранных полей


Автор: korob2001 12.1.2006, 08:36
Привет всем!
Пишу сейчас гостевую книгу, а точнее разбивку по сраницам.
Допустим я делаю запрос вида:
Код

SELECT * FROM TableName ORDER BY DateAdd DESC

Можно ли как-то узнать сколько выбрано полей по данному запросу, не проходя их в цикле? Думал сначала ориентироваться по Id, но в этой гостевой администратор и модераторы могут удалять записи, потому Id не будет последовательными числами.

Автор: Kesh 12.1.2006, 09:24
Код

SELECT COUNT(id) FROM TableName ORDER BY DateAdd DESC

Автор: Gold Dragon 12.1.2006, 09:28
Код

$r = mysql_query("SELECT * FROM TableName ORDER BY DateAdd DESC");
$a = mysql_num_rows($r);
echo $a;

Автор: boevik 12.1.2006, 09:34
Цитата(korob2001 @ 12.1.2006, 08:36 Найти цитируемый пост)

Можно ли как-то узнать сколько выбрано полей по данному запросу, не проходя их в цикле?

Так полей или записей?

Автор: korob2001 12.1.2006, 10:05
Цитата

Так полей или записей?

Мне нужно узнать кол-во сообщений в гостевой книге.

Автор: Illuminaty 12.1.2006, 10:09
Тогда, как Kesh написал делай

Автор: korob2001 12.1.2006, 19:21
Большое спасибо.
Вот это:
Код

SELECT COUNT(id) FROM TableName ORDER BY DateAdd DESC

то, что было нужно. Млин а я раньше делал разбивку по страницам, в цикле. ;)))) Всё тоже нормально работало, но не получалось выводить страницы сверху сообщений, только после цикла. Теперь есть и вверху и внизу.
Ещё раз всем спасибо, за помощь.

Автор: Bose 13.1.2006, 18:13
Цитата(korob2001 @ 12.1.2006, 19:21 Найти цитируемый пост)

Млин а я раньше делал разбивку по страницам, в цикле. ;))))


для разбивки по страницам я бы порекомендовал использовать SQL. Оператор LIMIT позволяет ограничить количество возвращаемых данных. Например
Код

SELECT * FROM TableName ORDER BY DateAdd DESC LIMIT 0,30

выдаст 30 первых записей(согласно твоей сортировке), а
Код

SELECT * FROM TableName ORDER BY DateAdd DESC LIMIT 30,60

выдаст следующие 30 записей (с 30й по 60ую).

Правда, при выполнении запроса MySQL всё-равно будет прочёсывать всю таблицу, чтобы отсортировать сообщения по дате. smile

Автор: Бонифаций 13.1.2006, 21:44
Цитата(Kesh @ 12.1.2006, 09:24)
Код

SELECT COUNT(id) FROM TableName ORDER BY DateAdd DESC

order by dateadd desc не нужен. нечего сортировать, результат будет одно число

Автор: Kesh 19.1.2006, 14:16
Бонифаций да знаю я... smile
Но все равно, спасибо за поправку... smile Туплю, бывает...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)