Форум → Программирование → PHP для идиотов → Запрос
Запрос
Страницы: ← Следующая страница →
-
Есть в SQL таблица [table][tr][td]id[/td][td]name[/td][td]rating[/td][/tr][/table] В ней допустим 1000 записей. Нужно упорядочить таблицу по колонке rating и вывести на каком месте строка с id = к примеру 251
SELECT * FROM `table` ORDER BY rating - а дальше как я незнаю (
Варианты:
1. Добавить в таблицу еще один столбец, и при каждом обновленнии таблицы, забивать в него места (но это нагрузка большая я так думаю)
2. А вот тут ваши идеи )
PS может есть в SQL какаянить функция для этого? Я не встречал ) -
13 сентября 2009 г. 10:55, спустя 8 минут 13 секунд
Кэп говорит:УГ попячся, да создай поле некое сделай ключем алсо поставь же туды AUTO_INCREMENT - и бей воруй убивай УГ с лучемете
-
13 сентября 2009 г. 11:04, спустя 9 минут 11 секунд
А по русски?
Кэп говорит:УГ попячся, да создай поле некое сделай ключем алсо поставь же туды AUTO_INCREMENT - и бей воруй убивай УГ с лучемете
-
13 сентября 2009 г. 11:08, спустя 3 минуты 44 секунды
CREATE TABLE `user.rating` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`user_id` INT NOT NULL ,
`name` TEXT NOT NULL ,
`rating` INT NOT NULL
) -
13 сентября 2009 г. 11:13, спустя 4 минуты 26 секунд
Ты че думаешь у меня id не автоматически заполняется? ) Мне надо узнать на каком месте по рейтингу строка с каким то там idCREATE TABLE `user.rating` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`user_id` INT NOT NULL ,
`name` TEXT NOT NULL ,
`rating` INT NOT NULL
) -
13 сентября 2009 г. 11:21, спустя 8 минут 10 секунд
SELECT * FROM `user.ratings` ORDER BY `rating`
$i = 0; // или 1
while($row = mysql_a…..
…
if($row = .. {}
$i++;Спустя 19 сек.какбэ намекает -
13 сентября 2009 г. 12:28, спустя 1 час 7 минут 8 секунд
в масив результат загони да упорядочивай как хочеш.. -
13 сентября 2009 г. 14:23, спустя 1 час 55 минут 4 секунды
в масив результат загони да упорядочивай как хочеш..
Если будет огромная куча записей, то не самый лучший вариант, мне кажется… -
-
13 сентября 2009 г. 22:10, спустя 7 часов 30 минут 36 секунд
Если речь идет о пыхе, то:<?php
//Интересующий нас id
$id=251;
//Счетчик
$i=1;
//Запрос
$sql = "SELECT * FROM table ORDER BY rating";
$result = mysql_query($sql);
while($rows_count = mysql_fetch_assoc($result))
{
//Если встретили интересующий нас id, записываем позицию.
if ($rows_count['id']==$id){$poz=$i;}
else{$i=$i+1;}
}
//Выводим позицию
echo'Интересующий нас id на ';
echo $poz;
echo' месте';
?> -
13 сентября 2009 г. 22:48, спустя 37 минут 40 секунд
в масив результат загони да упорядочивай как хочеш..
Вы используете СУБД, которая призвана выбирать/упорядочивать/считать и очень быстро.
Пользуйтесь СУБД не только как хранилищем, но и как вычислителем.
Если нужно узнать на каком месте по рейтингу один участник, то запрос примерно так можно написать:
– посчитать к-во записей, rating которых меньше rating нужного ID
select count(*)
from table
where
and rating < (select rating from table where id = :id)
order by rating
Можно по пробовать вычислить "место" и для всех записей:
select
id,
(select count(*) from table t2 where t2.rating < t1.rating) mesto
from
table t1
– если добавить предложение WHERE, то будет подсчет для определенной записи.
where
t1.id = :idСпустя 66 сек.Для быстрого выполнения этих запросов нужен индекс на поле rating -
13 сентября 2009 г. 22:59, спустя 11 минут 4 секунды
SELECT FIND_IN_SET(6001, (select GROUP_CONCAT( id SEPARATOR ",") FROM founds) )
это вам старт, дальше сами играйтесь ;)Спустя 61 сек.AndryG, и твоя логика верна тоже =))Сапожник без сапог -
13 сентября 2009 г. 23:02, спустя 3 минуты 12 секунд
а моя? Я тоже хочу лесных слов от дуда)))Спустя 33 сек.только не говори пиздец))))ыы -
13 сентября 2009 г. 23:03, спустя 51 секунду
твой метод - полная хуйня
а моя? Я тоже хочу лесных слов от дуда)))Спустя 33 сек.только не говори пиздец))))ыыСпустя 24 сек.особенно когда табличка большая и ищут место так 50000ое … вот тогда точно 502 увидишьСапожник без сапог -
13 сентября 2009 г. 23:04, спустя 1 минуту 33 секунды
ушел рыдать))Спустя 76 сек.Если он пыху юзает, один фих от массива не уйти
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!