BorodinKO
25.02.2013 - 23:55
Есть таблица Table вида:
id name param1 param2 param3
1 v2 1 2 4
2 rx 32 2 8 4
3 jbk 1 2 1
4 rp 2 4 3
5 fm 1 2 4
6 db 1 2 1
Задача имея id строки вывести все остальные строки в таком порядке что бы в начале была строка с заданным id второй строкой шла стока с максимальным числом схожих парметров и так далее
к примеру мы имеем id строки 3
3я строка:
id name param1 param2 param3
3 jbk 1 2 1
результат запроса должен вернуть следующее:
id name param1 param2 param3
3 jbk 1 2 1
6 db 1 2 1
5 fm 1 2 4
1 v2 1 2 4
2 rx 32 2 8 4
4 rp 2 4 3
как это сделать? можно ли обойтись 1 запросом?
ORDER BY param1, param2, param3
_____________
VPS от 5$, первые 2 месяца -
бесплатно.
Игорь_Vasinsky
26.02.2013 - 10:42
не, это слишком просто
строка по которой может идти сравнение может иметь вид
id name param1 param2 param3
3 jbk 11 22 101
- вот в чём фокус, тут простая сортировка не подойдёт
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
killer8080
26.02.2013 - 11:45
SELECT *, IF(`id` = 3, 1, 0) AS `sort_field`
FROM `table`
ORDER BY `sort_field` DESC , `id` DESC
Valick
26.02.2013 - 12:40
killer8080, не то, сортировать надо по параметрам.
Вообще достаточно странная задача, даже немножко интересно в следствии чего она возникла. Немножко - потому, что есть мнение о существовании ошибки при проектировании БД.
_____________
Стимулятор ~yoomoney - 41001303250491