Om jag kör denna procedur så sorterar den på b.bid första gången, sedan så sorterar den på b.bdate. Mysko tycker jag.
CREATE PROCEDURE `afromcat`(IN c_id tinyint(3),IN c_sort tinyint(1))
BEGIN
If c_sort = 1 or c_sort = 2 then
SELECT b.bid,b.bdate,b.bheadline,c_sort FROM adverts b
INNER JOIN cat c ON b.bcat=c.cid
WHERE b.bcat = c_id
ORDER BY c_sort DESC;
Else
SELECT b.bid,b.bdate,b.bheadline,c_sort FROM adverts b
INNER JOIN cat c ON b.bcat=c.cid
WHERE b.bcat = c_id
ORDER BY c_sort ASC;
End if;
END;
Har inte gjort detta i MySQL, men det borde lösas ungefär så här:
CREATE PROCEDURE `afromcat`(IN c_id tinyint(3),IN c_sort tinyint(1))
BEGIN
SELECT b.bid,b.bdate,b.bheadline,c_sort FROM adverts b
INNER JOIN cat c ON b.bcat=c.cid
WHERE b.bcat = c_id
ORDER BY CASE c_sort WHEN 1 THEN CAST(b.bid as varchar(50))
WHEN 2 THEN CAST(b.bdate as varchar(50))
ELSE b.bheadline END;
END;