Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Как определить количество определенных записей в базе? (http://www.flasher.ru/forum/showthread.php?t=113734)

der hund 07.07.2008 15:59

Как определить количество определенных записей в базе?
 
Скорее не правельно задал вопрос, как отсортировать таблицу чтобы таблица была отсортирована по клву повторений по убыванию.

У нас имеется таблица

1 Помидор
2 Огурец
3 Картошка
4 Помидор
5 Помидор
6 Свекла
7 Огурец
8 Капуста
9 Капуста
10 Капуста
...
10000

задача, отсортеровать ее так чтобы певыми шли записи которые больше всего повторяються и так по убыванию
тое:

1 Капуста
2 Капуста
3 Капуста
4 Помидор
5 Помидор
6 Помидор
7 Огурец
8 Огурец
9 Картошка
10 Свекла
...
10000

Как это можно сделать не переписывая таблицу через php, ведь при переписывании 10000 записей вылазят огромным промежутком времени.

dmx102 09.07.2008 14:28

Вам сюда --> http://www.flasher.ru/forum/forumdisplay.php?f=72

wvxvw 09.07.2008 22:15

Цитата:

FOUND_ROWS()

A SELECT statement may include a LIMIT clause to restrict the number of rows the server returns to the client. In some cases, it is desirable to know how many rows the statement would have returned without the LIMIT, but without running the statement again. To obtain this row count, include a SQL_CALC_FOUND_ROWS option in the SELECT statement, and then invoke FOUND_ROWS() afterward:

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
-> WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();
так можно определить количество вхождений ключа, по которому был сделан поиск... но сортировать таблицы SQL вроде как еще не умеет... ну не сам... хотя, может я и ошибаюсь...

Т.е. как бы я решал такую задачу:
за каждым ключем закрепил бы поле в котором регистрировл количество вхождений.
т.е. перед добавлением проверял бы количество вхождений, а после добавления инкрементил его. Таким образом, сделав запрос по двум параметрам позже я бы смог узнать а) какой ключ используется чаще остальных, б) сколько всего вхождений ключа есть. Ну, и наверняка сразу же переписывал таблицу в отсортированом виде после добавления одной строки, а не раз в пятилетку =)
Вопрос только зачем нужно ее сортировать?

Mnilionic 11.07.2008 17:01

зачем сортировать таблицу? при необходимости нужно сортировать результат отборки. А запрашивать 10 000 записей - это видимо тока при резервном копировании ))

Сайлас 15.07.2008 16:52

А че, SELECT name, COUNT(name) as ncount FROM table GROUP BY name ORDER BY ncount DESC не пойдет?

Mnilionic 15.07.2008 17:05

именно так и надо

wvxvw 15.07.2008 22:24

Ну так человек спросил как узнать сколько всего записей, а не как получить все записи, хотя, конечно, одно другому не мешает =)


Часовой пояс GMT +4, время: 13:40.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.