|
|
|
Выборка
|
|||
|---|---|---|---|
|
#18+
Народ, помогите написать запрос - есть таблица, у ней из последних 20 строк надо по определенному рангу (задается строчкой в ней числа от 0 до 10) вытащить данные. Как упорядочить сначала по id, потом в этом же запросе по rang? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 15:58:16 |
|
||
|
Выборка
|
|||
|---|---|---|---|
|
#18+
Без структуры таблицы трудно понять. Насколько я понял, достаточно: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 20:36:37 |
|
||
|
Выборка
|
|||
|---|---|---|---|
|
#18+
TABLE `news` ( `news_id` int(11) NOT NULL auto_increment, `news_head` varchar(250) NOT NULL default '', `news_text` text NOT NULL, `news_im` varchar(50) default NULL, `news_other` varchar(200) default NULL, `tm` varchar(10) NOT NULL default '00:00', `str_id` int(11) NOT NULL default '0', `count` int(11) NOT NULL default '0', `avtor` varchar(100) default NULL, `ist` varchar(100) default NULL, `ist_link` varchar(100) default NULL, `rang` tinyint(4) NOT NULL default '0', PRIMARY KEY (`news_id`) ) TYPE=MyISAM AUTO_INCREMENT=1 ; Здесь надо взять последних 20 по news_id и из них первыми выдавать тех, у кого больше ранг ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 10:32:50 |
|
||
|
Выборка
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 10:59:16 |
|
||
|
Выборка
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 11:04:16 |
|
||
|
Выборка
|
|||
|---|---|---|---|
|
#18+
А причём тут вообще username? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 11:12:19 |
|
||
|
Выборка
|
|||
|---|---|---|---|
|
#18+
у меня стоит версия 3.23.39 >>> order by news_id DESC, rang DESC limit 0,20 так упорядочивает только по news_id :( Пробовал >>>select * from (select * from news order by news_id desc limit 20) as news_tmp order by news_tmp.username desc не работает, думаю из-за версии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 11:46:17 |
|
||
|
Выборка
|
|||
|---|---|---|---|
|
#18+
Ну сделайте в два запроса через временную таблицу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 12:03:07 |
|
||
|
Выборка
|
|||
|---|---|---|---|
|
#18+
CREATE TEMPORARY TABLE tmp ( news_id INT(11) UNSIGNED DEFAULT '0' NOT NULL); LOCK TABLES news read; INSERT INTO tmp SELECT news_id FROM news order by news_id limit 20; SELECT news_id FROM news, tmp WHERE news.news_id=tmp.news_id order by news.order; UNLOCK TABLES; DROP TABLE tmp; Не пашет ( В чем мой косяк??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 13:52:30 |
|
||
|
Выборка
|
|||
|---|---|---|---|
|
#18+
paxу меня стоит версия 3.23.39 >>> order by news_id DESC, rang DESC limit 0,20 так упорядочивает только по news_id :( Пробовал >>>select * from (select * from news order by news_id desc limit 20) as news_tmp order by news_tmp.username desc не работает, думаю из-за версии Сначало по рангу а потом по news_id. При помощи DESC - ASK последовательность. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 13:54:10 |
|
||
|
Выборка
|
|||
|---|---|---|---|
|
#18+
не получится это сделать составным ордером. Здесь можно выкрутиться через вложенный запрос или с помощью темповой таблицы. Оба метода здесь уже написали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 14:17:35 |
|
||
|
Выборка
|
|||
|---|---|---|---|
|
#18+
Есть еще 1 вариант, более простой и менее трудоемкий для БД. Сначало выбираешь id: select news_id from news order by news_id desc limit 20; Потом выбираешь по этим id эти новости с сортировкой select * from news where news_id in ("выбраные перед этим id новостей через запятую") order by rang; Для версии которыя поддерживает вложенные запросы это выглядит немного проще: select * from news where news_id in (select news_id from news order by news_id desc limit 20) order by rang; Учитавая то, что IN использует индексы, работать будет быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 14:25:06 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=33188606&tid=1853812]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
179ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 442ms |

| 0 / 0 |
