webForumDet fria alternativet

SP i mySql beter sig skumt.

3 svar · 309 visningar · startad av Travoni

TravoniMedlem sedan okt. 20041 556 inlägg
#1

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;

Call afromcat(2,2)

emissionMedlem sedan dec. 19996 721 inlägg
#2

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;

Med reservation för lite fix...

TravoniMedlem sedan okt. 20041 556 inlägg
#3

Verkar inte funka med cast() i order by.
Får error när jag kör den. :(

emissionMedlem sedan dec. 19996 721 inlägg
#4

Prova utan cast

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)