|
Тема |
Re: Помощ за sql заявка [re: salle] |
|
Автор |
salle (един такъв) |
|
Публикувано | 01.08.09 15:27 |
|
|
Да поясня. Като казваш "равни на предишното" не стават ясни много неща.
Преишното по какъв признак? Да речем, че говорим за поредица от числа. Има съществена разлика дали поредицате е непрекъстната.
Предишното на 5 например 4 ли е или "най-голямото число по-малко от 4"
Освен това от структурата на таблицата ти следва, че може да има повторения в поредицата т.е. да имаш 1,2,3,4,4,5. В този случай кое е "предишното на 5"? Ако става въпрос само за сортиране не е проблем разбира се да сортилаш двете четворки заедно.
И разбира се използвай INT
Ето един пример за дървовидна структура. Дефиницията на таблицата определя, че всеки елемент има само един "родител", но може да има много "наследници"
CREATE TABLE `class` (
`id` int(10) unsigned NOT NULL auto_increment,
`parent_id` int(10) unsigned default NULL,
PRIMARY KEY (`id`),
KEY `parent_id` (`parent_id`)
);
INSERT INTO class (parent_id) VALUES (0), (1), (2), (3), (1);
До сортираме по id и parent_id поотделно:
SELECT * FROM class ORDER BY id;
+----+-----------+
| id | parent_id |
+----+-----------+
| 1 | 0 |
| 2 | 1 |
| 3 | 2 |
| 4 | 3 |
| 5 | 1 |
+----+-----------+
SELECT * FROM class ORDER BY parent_id;
+----+-----------+
| id | parent_id |
+----+-----------+
| 1 | 0 |
| 2 | 1 |
| 5 | 1 |
| 3 | 2 |
| 4 | 3 |
+----+-----------+
Кажи сега при този резултат как да дефинираме задачката.
|
| |
|
|
|