[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сортировка
deman455
Каким образом сортировать (не имеет значение в какую стороны) именно указанные строки?
Разъясню:


------------
id | score
------------
1 | 23
2 | 51
3 | 37
4 | 84
------------


К примеру нужно сортировать (по score) по убыванию строки в которых id = 2 и 4.
При том что ныжные id`ы указываються.
В моем случае должно вывести:


------------
id | score
------------
4 | 84
2 | 51
------------

<- По убыванию.
И еще вопрос... На сколько такая сортировка будет грузить сервер? Т.е. на сколько она вообще экономна, если так можно сказать.
Спасибо зарание.

MySql.



Спустя 13 минут, 56 секунд (21.11.2010 - 10:34) Lenarfate написал(а):
читай про DESC и ASC

Спустя 54 минуты, 36 секунд (21.11.2010 - 11:29) deman455 написал(а):
Не в том дело.
mysql_query("SELECT score FROM users ORDER BY id DESC");
А как мне указать какие именно ID мне надо сортировать, что бы не сортировало всех.

Спустя 10 минут, 57 секунд (21.11.2010 - 11:40) DySprozin написал(а):
{исправлено}
точнее, так:

mysql_query("SELECT score FROM users WHERE id='2' OR id='4' ORDER BY id DESC");

Спустя 2 минуты, 25 секунд (21.11.2010 - 11:42) deman455 написал(а):
Да, только неизвестно сколько таких ID может быть, их может быть 2 может быть 100. Все IDs вписаны в массив...

Спустя 5 минут, 44 секунды (21.11.2010 - 11:48) DySprozin написал(а):
эх... мог бы и сам догадаться (; ну хорошо, помогу:

...
$mas; //массив с id
...
$zapr=""; //будущий sql запрос
foreach($mas as $key => $value){
if($key<count($mas)-1) $zapr.="id='$value' OR ";
else $zapr.=" id='$value'";
}
$q=mysql_query("SELECT score FROM users WHERE $zapr ORDER BY id DESC");
...



Спустя 8 минут, 2 секунды (21.11.2010 - 11:56) job-nik написал(а):
а зачем тебе это вообще нужно, если не секрет? может имеет смысл перевести в массив js и оттуда на стороне клиента сортировать, как то душе угодно?

Цитата (DySprozin @ 21.11.2010 - 08:48)
эх... мог бы и сам догадаться (; ну хорошо, помогу:

...
$mas; //массив с id
...
$zapr=""; //будущий sql запрос
foreach($mas as $key => $value){
if($key<count($mas)-1) $zapr.="id='$value' OR ";
else $zapr.="  id='$value'";
}
$q=mysql_query("SELECT score FROM users WHERE $zapr ORDER BY id DESC");
...


проще всю таблицу открыть и потом отсеить

Спустя 1 минута, 57 секунд (21.11.2010 - 11:58) DySprozin написал(а):
job-nik
это сколько весить-то будет такой массивчик на стороне клиента? blink.gif laugh.gif

Спустя 58 секунд (21.11.2010 - 11:59) job-nik написал(а):
DySprozin
мне по чём знать? взесь, посчитай rolleyes.gif

Спустя 3 минуты, 12 секунд (21.11.2010 - 12:02) DySprozin написал(а):
job-nik
в зависимости от таблицы это может быть и кбайт, и метр, и десять.. у тебя вряд ли будет желание гулять по сайту, где нужно ждать, пока метр данных загрузится (;

Спустя 5 минут, 40 секунд (21.11.2010 - 12:08) deman455 написал(а):
Да, не секрет. Есть приложение в котором есть группы людей. У каждого человека есть свой id и id его группы. Необходимо сделать так что бы пользователь видел всю свою группу, при этом что бы сортировка была по рейтингу.
В приложении несколько десятков тысяч ID`ов, вот там мой второй вопрос. При таком выборе группы, сильно ли это грузит базу? Или так же как и Update?

Спустя 1 минута, 27 секунд (21.11.2010 - 12:09) job-nik написал(а):
DySprozin
я предложил вариант на основе полученных данных от ТС. в поставленной задаче говорилось о 2-100. речи о метре не было. для чего ему нужна таблица? что в этой таблице будет содержатся? нам это пока не известно. blink.gif так о чём же вообще спорить? или тебе просто поспорить охота? rolleyes.gif

Спустя 1 минута, 16 секунд (21.11.2010 - 12:11) job-nik написал(а):
deman455
тогда тебе надо выбрать не по id а по группе и сортировать по рейтингу rolleyes.gif

Спустя 6 минут, 9 секунд (21.11.2010 - 12:17) DySprozin написал(а):
;;в поставленной задаче говорилось о 2-100. речи о метре не было.
всегда надо смотреть в перспектиииве (;

;;При таком выборе группы, сильно ли это грузит базу?
да вроде не должно... стандартный запрос (;

Спустя 1 час, 20 минут, 28 секунд (21.11.2010 - 13:37) SlavaFr написал(а):
id='2' OR id='4' OR ......id=x

означает тоже самое что
id in(2,4,.....n)

так что
$q=mysql_query("SELECT score FROM users WHERE id in(".implode(',',$masv_s_id).") ORDER BY ?? DESC");

достаточно

edit: чтоб базу не грузило нужно поля которые в order by упомянаются непременно индехировать.

Спустя 9 часов, 54 минуты, 39 секунд (21.11.2010 - 23:32) deman455 написал(а):
Спасибо.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.