Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 20:40 11.05.24 
Компютри и Интернет
   >> Бази данни
Всички теми Следваща тема *Кратък преглед

Тема ORDER BYнови  
Автор mr.vain (пътник 57)
Публикувано16.01.06 18:28



Здравейте.

Въпросът може да е малко странен, но ми е нужно решение, а не можах да се сетя. Как мога да сортирам извлечените редове по определен ред, различен от ORDER BY column_name? Идеята е, че имам следната заявка

SELECT.... WHERE id IN (3,7,2,9,10,4)

Нужен ми е "ORDER BY id" по реда на задаването на id-то във WHERE клаузата, който в общия случай се генерира динамично.

Базата е MySQL 4.1. Благодаря ви предварително!

Редактирано от mr.vain на 16.01.06 18:35.



Тема Re: ORDER BY [re: mr.vain]  
Автор salle (един такъв)
Публикувано16.01.06 19:39



Да можеш

... ORDER BY <израз>

Само трябва да си измислиш израз който да върши работа

С груба сила например:

... ORDER BY CASE id WHEN 3 THEN 1 WHEN 7 THEN 2 WHEN 9 THEN 3 ...


Аз бих го направил с допълнителна временна табличка и JOIN

CREATE TEMPORARTY TABLE sort (sort TINYINT, id INT) ENGINE=HEAP;
INSERT INTO sort VALUES (1,3), (2,7), (3. 9) ...

Редактирано от salle на 16.01.06 19:49.



Тема Re: ORDER BYнови [re: salle]  
Автор mr.vain (пътник 57)
Публикувано16.01.06 19:52



Мерси за бързия отговор, аз току що също намерих решение, което ми върши работа:

SELECT...
FIND_IN_SET(id,'3,7,2,9,10,4') AS sortBy
WHERE id IN (3,7,2,9,10,4)
ORDER BY sortBy

Не зная до колко е универсално и правилно, но работи чудесно.

Има три вида хора. Част от проблема, част от решението и част от пейзажа.


Тема Re: ORDER BYнови [re: mr.vain]  
Автор salle (един такъв)
Публикувано16.01.06 20:56



Естествено, че има много варианти.

Твоето FIND_IN_SET() също може да отиде в ORDER BY клаузата за да не ти се връща в резултата:

SELECT...

WHERE id IN (3,7,2,9,10,4)
ORDER BY FIND_IN_SET(id,'3,7,2,9,10,4');



Тема Re: ORDER BYнови [re: salle]  
Автор mr.vain (пътник 57)
Публикувано16.01.06 21:53



Идеално.
Не бях използвал тази функция досега, но ми свърши чудесна работа.

Благодаря ти за помощта!

Има три вида хора. Част от проблема, част от решението и част от пейзажа.


Тема Re: Ами то и аз ...нови [re: mr.vain]  
Автор salle (един такъв)
Публикувано17.01.06 01:19



Тази функция FIND_IN_SET() я знам само дотолкова доколкото съм я чел в документацията и съм я обяснявал като се наложи.




Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.