October 27, 2005 at 1:54 pm
SELECT s.valor, r.rolename as description
FROM Split( '14;0;-1;-2;', ';' ) s
LEFT OUTER JOIN roles r ON s.valor = r.roleid
it results:
id description
----------------------
14Administrators
0Administrators
-1NULL
-2NULL
i have a litle list of IFs :
if id = -1 description = Users
if id = -2 description = Host
etc.
Any possibility to put theses 'ifs' into the query?
[]s
October 27, 2005 at 1:56 pm
case S.Valor
when -1 then 'Users'
when -2 then 'Host'
else r.RoleName
end as Description
October 27, 2005 at 2:00 pm
Can the rows for Users and Hosts be added to the Roles table ?
If not:
SELECT s.valor, r.rolename as description
FROM Split( '14;0;-1;-2;', ';' ) s
LEFT OUTER JOIN
(select role_id, rolename
from roles
union all
select -1 , 'Users'
union all
select -2 , 'Host'
) as r
ON s.valor = r.roleid
SQL = Scarcely Qualifies as a Language
October 27, 2005 at 2:07 pm
thats the point. these negative ids are not inside the roles tables ( who knows the guy who did that please kill him for me! (dotnetnuke's crazy people) )
my darling! the first example worked just like i need!
SELECT
s.valor,
CASE s.valor
WHEN '0' THEN 'Administrators'
WHEN '-1' THEN 'All Users'
WHEN '-2' THEN 'Host'
WHEN '-3' THEN 'Unauthenticated Users'
ELSE r.rolename
END AS description
FROM Split( '14;0;-1;-2;', ';' ) s
LEFT OUTER JOIN roles r ON s.valor = r.roleid
all working fine!
now I gotta think how can i put all together hehe everything works at the main query with 1 row. When I do with all rows, boy... It takes forever and simply doesn't end.
but thats another issue for another thread isnt it?
/kiss
/thankyouverymuch
/anotherkiss
[]s
[]s
October 27, 2005 at 2:11 pm
We'll give a shot at the speed issue but don't expect this code to ever run lightning fast...
October 27, 2005 at 2:16 pm
it can run slowly if it at least run hehehe the problem is when i put all functions together ( are 3 ), and call the functions caller into the main query which is already a bunch of left outer joins, it simply doesn't end the query. seems like an endless loop, and i have no clue where it is
when i finally put all to work for the main query i will show all of them for you guys have a look!
i started learning tsql on monday, so I might be overcomplicating somewhere =^.^=
( have i told u I love u today? i love u! =^.^= )
October 27, 2005 at 2:18 pm
If you look like you're pic then it's fine... if you look like me then I'll pass on the love .
October 27, 2005 at 2:29 pm
i look like the picture =^.^=
October 27, 2005 at 2:31 pm
Great .
October 27, 2005 at 2:39 pm
hmm now I put all into a function. the split() works fine.
but something at the last rows are not right. It error:
"Server: Msg 2010, Level 16, State 1, Procedure testList, Line 29
not possible to alter testList for it be an incompatible type of object."
what do u think?
alter FUNCTION testList( @IDList VARCHAR(1000), @Delimiter CHAR(1) )
RETURNS VARCHAR(1000)
--RETURNS @result TABLE( description VARCHAR(1000) )
AS
BEGIN
DECLARE @tmp_result TABLE( valor VARCHAR(1000) )
DECLARE @tmp_distinct TABLE( valor VARCHAR(1000), description VARCHAR(1000) )
DECLARE @tmp_description TABLE( description VARCHAR(1000) )
DECLARE @result VARCHAR(1000)
/* get a table with splited data - each id in a row */
INSERT INTO @tmp_result SELECT valor FROM Split(@IDList, @Delimiter )
INSERT INTO @tmp_distinct
SELECT
s.valor ,
CASE s.valor
WHEN '0' THEN 'Administrators'
WHEN '-1' THEN 'All Users'
WHEN '-2' THEN 'Host'
WHEN '-3' THEN 'Unauthenticated Users'
ELSE r.rolename
END AS description
FROM @tmp_result s
LEFT OUTER JOIN roles r ON s.valor = r.roleid
INSERT INTO @tmp_description SELECT DISTINCT(description) FROM @tmp_distinct
SELECT @result = ISNULL( @result + ' - ', '' ) + description FROM @tmp_description
--INSERT INTO @result SELECT * FROM @var
RETURN @result
END
-- select valor from Split( '14;0;-1;-2;', ';' )
-- SELECT * from dbo.testList( '14;0;-1;-2;', ';' )
October 27, 2005 at 2:42 pm
Try dropping the function and recreating it with your code (swapping alter with create).
October 27, 2005 at 2:49 pm
O.o
it worked!!!!
SELECT dbo.testList( '14;0;-1;-2;', ';' ) as rolenames
rolenames
---------------------------------
Administrators - All Users - Host
\o/
i know it might be a stupid question, but why this error happens sometimes and sometimes not happens?
[]s
October 28, 2005 at 6:38 am
You probabely tried to change the type of the function (some return tables, other table variables and the last type a scalar value). And it is forbiden to alter the function in a way that changes the type of the function.
Viewing 13 posts - 1 through 12 (of 12 total)
You must be logged in to reply to this topic. Login to reply