Сортиране на SQL заявка с 2 изисквания

d_badboy

Registered
Един бърз въпрос и от мене, че леко блокирах :)
Имам следната заявка, която се справя добре,
но искам да сортира линковете по азбучен ред,
тези които са с еднакви стойности в полето hits
[sql]SELECT * FROM links ORDER BY hits DESC[/sql]
пробвах така пак не го прави
[sql]SELECT * FROM links GROUP BY link ORDER BY hits DESC[/sql]
 
d_badboy каза:
Един бърз въпрос и от мене, че леко блокирах :)
Имам следната заявка, която се справя добре,
но искам да сортира линковете по азбучен ред,
тези които са с еднакви стойности в полето hits
[sql]SELECT * FROM links ORDER BY hits DESC[/sql]
пробвах така пак не го прави
[sql]SELECT * FROM links GROUP BY link ORDER BY hits DESC[/sql]
Дай си структората на таблицата. Плюс това пробвай да подреждаш по друга колона(тази с имената).
 
[sql]CREATE TABLE IF NOT EXISTS `links` (
`id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`link` varchar(50) NOT NULL,
`cat_id` smallint(5) unsigned DEFAULT '1',
`user_id` smallint(5) unsigned DEFAULT '10',
`added` int(10) unsigned DEFAULT UNIX_TIMESTAMP(),
`hits` smallint(5) unsigned DEFAULT '1',
`rates` smallint(5) unsigned DEFAULT '1',
PRIMARY KEY (`id`),
KEY `link` (`link`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;

INSERT INTO `links` (`id`, `link`) VALUES
(0, 'a-link-1.com'),
(0, 'b-link-2.com'),
(0, 'c-link-3.com'),
(0, 'd-link-4.com'),
(0, 'e-link-5.com'),
(0, 'f-link-6.com'),
(0, 'g-link-7.com'),
(0, 'h-link-8.com'),
(0, 'i-link-9.com'),
(0, 'j-link-10.com');[/sql]
структура + 10 записа, сортирането може да се промени по hits, rates, added, но при еднакви полета примерно ако всички са hits=1 искам да ги подрежда по азбучен ред
 
http://web-tourist.net/forum/viewtopic.php?t=46705&dokladvai=1
Виж тази тема или тази:
https://support.office.com/bg-bg/article/%D0%9A%D0%BB%D0%B0%D1%83%D0%B7%D0%B0-ORDER-BY-e8ea47f7-5388-460a-bec8-dcc81792d762?ui=bg-BG&rs=bg-BG&ad=BG

SELECT * FROM links ORDER BY link ASC ?
 
Ако всички са hits=1, освен по hits искам да ги подрежда и по азбучен ред
пробвах с групиране, но не извежда резултатите правилно подредени. Незнам дали обясних правилно.
 
d_badboy каза:
Ако всички са hits=1, освен по hits искам да ги подрежда и по азбучен ред
пробвах с групиране, но не извежда резултатите правилно подредени. Незнам дали обясних правилно.
Защо не ползваш клауза WHERE ?
SELECT * FROM links ORDER BY link ASC WHERE hints = '1'
 
Искам да ми извежда всички линкове сортирани по брой кликвания, а не само тези които са WHERE hits = '1'
Но ако има линкове с еднакъв брой кликвания, тях да сортира и по име (link)
[sql]SELECT * FROM links ORDER BY link ASC, hits DESC[/sql]
този код също не връща правилно резултатите
 
d_badboy каза:
Искам да ми извежда всички линкове сортирани по брой кликвания, а не само тези които са WHERE hits = '1'
Но ако има линкове с еднакъв брой кликвания, тях да сортира и по име (link)
[sql]SELECT * FROM links ORDER BY link ASC, hits DESC[/sql]
този код също не връща правилно резултатите
Другият варянт е да си направиш функция за сортиране по азбучен ред на изходящият масив но това е по-объркващо. :)
 
След малко тестове и по метода проба-грешка мисля че намерих правилната заявка просто при ORDER BY първъят параметър е с приоритет, в края на краищата не е чак толкова сложно :)
[sql]SELECT * FROM links ORDER BY hits DESC, link ASC[/sql]
Може да не е най-правилният начин, но ми извежда правилно резултатите.
Благодаря ти dakata__92 за труда ти давам точка :?:
 

Back
Горе