Сортировка по имени и дополнительному значению

Сортировка по имени и дополнительному значению

есть таблица
id - filename - type
1 - 01aaa.zip - 2
2 - 02aaa.zip - 2
3 - 03aaa.zip - 2
4 - 04aaa.zip - 2
5 - 05aaa.zip - 2
6 - aaa файлы - 4
7 - 01bbb.zip - 2
8 - 02bbb.zip - 2
9 - 03bbb.zip - 2
10 - 04bbb.zip - 2
11 - 05bbb.zip - 2
12 - bbb файлы - 4

нужно сделать выбоку сортируя по имени файла с приоритетом по типу

тоесть результат выборки должет быть следующим

6 - aaa файлы - 4
1 - 01aaa.zip - 2
2 - 02aaa.zip - 2
3 - 03aaa.zip - 2
4 - 04aaa.zip - 2
5 - 05aaa.zip - 2
12 - bbb файлы - 4
7 - 01bbb.zip - 2
8 - 02bbb.zip - 2
9 - 03bbb.zip - 2
10 - 04bbb.zip - 2
11 - 05bbb.zip - 2

подскажите как такое сделать .... или как проще?

пробывал кобинировать order by ... но что-то никак...
 

Profic

just Profic (PHP5 BetaTeam)
SUBSTRING_INDEX (или как-то так)
но имхо проще хранить в таком случай расширение в отдельном поле
 
что - то не пойму как сюда прикрутить SUBSTRING_INDEX

-~{}~ 28.07.04 16:00:

вообщемто вот это служит так
SELECT * FROM table ORDER BY filename

01aaa.zip
02aaa.zip
03aaa.zip
04aaa.zip
05aaa.zip
aaa файлы
01bbb.zip
02bbb.zip
03bbb.zip
04bbb.zip
05bbb.zip
bbb файлы

вот как заставить выводить так ?

aaa файлы
01aaa.zip
02aaa.zip
03aaa.zip
04aaa.zip
05aaa.zip
bbb файлы
01bbb.zip
02bbb.zip
03bbb.zip
04bbb.zip
05bbb.zip
 

Profic

just Profic (PHP5 BetaTeam)
эээ, сорри, я подумал вначале по расширению сортировать...
если структура имени файла именно такая, то где-то так:
[sql]
select
if(substring(filename, 4, 1) = ' ', '00', substring(filename, 1, 2)) as idx,
if(substring(filename, 4, 1) = ' ', substring(filename, 1, 3), substring(filename, 3, 3)) as ftype,
*
from table
order by ftype, idx;
[/sql]
, но изврат это, имхо, полный. Структура у тебя явно неправильная
 
Profic да структура хромает для такого, я во почему-то думал, что это можно реализовать через order by...
вывод вообщем таков:
меняем структуру :)
предложения по ней самой принимаются :)
 

Profic

just Profic (PHP5 BetaTeam)
nofx
выноси в отдельно поле своё это aaa, bbb и пр.
т.е. слелай что-то типа
id - filename - type - ftype - idx
1 - 01aaa.zip - 2 - aaa - 1
2 - 02aaa.zip - 2 - aaa - 2
3 - 03aaa.zip - 2 - aaa - 3
4 - 04aaa.zip - 2 - aaa - 4
5 - 05aaa.zip - 2 - aaa - 5
6 - aaa файлы - 4 - aaa - 0
7 - 01bbb.zip - 2 - bbb - 1
8 - 02bbb.zip - 2 - bbb - 2
9 - 03bbb.zip - 2 - bbb - 3
10 - 04bbb.zip - 2 - bbb - 4
11 - 05bbb.zip - 2 - bbb - 5
12 - bbb файлы - 4 - bbb - 0
мой запрос именно это и делал :)
и order by как раз получится такой же как в моём запросе :)
 
а если просто
ORDER BY filename, idx

-~{}~ 28.07.04 17:27:

Profic

вообщем я сделал так
две таблицы

files и names

files
id - filename - type
1 - aaa01.zip - 1
2 - aaa02.zip - 1
3 - aaa03.zip - 1
4 - aaa04.zip - 1

names
id - name
1 - aaa

потом

[sql]
SELECT * FROM files,names WHERE files.type=names.id ORDER BY files.filename
[/sql]

PHP:
$result = mysql_query("SELECT * FROM files,names WHERE files.type=names.id ORDER BY files.filename");

while ($row = mysql_fetch_assoc($result)){

 if ($row['type']!=$type2){
   echo $row['name']."<br>";
   }
 echo $row['filename']."<br>";
 $type2 = $row['id'];

 }
 
Сверху