T-Sql Hakkında Soru
-
merhaba beyler,
elimde id1,id2,state kolonlarından oluşan bir tablo var (arkadaşlık tablosu) ben ortak arkadaş sayısnı çekmek için şöyle bir fonksiyon yazdım fakat derlenmiyor, aynı kodu stored procedur eolarak derleyince çalışıyor fakat o zamanda benim işimi görmüyor, t-sql den iyi anlıyanlar kodu nasıl düzeltebileceğim hakkında birşey söyliyeiblirler mi?
kod burda,
CREATE FUNCTION [dbo].[GetCommonFriendCount]
(
@id1 int,
@id2 int
)
RETURNS int
AS
BEGIN
with fuckinFriends1(fid) as
(
select
(CASE @id2
when userFriend.id1 then userFriend.id2
when userFriend.id2 then userFriend.id1 end)
as fid
from userFriend
where (@id2 = userFriend.id1 or @id2 = userFriend.id2) and userFriend.state = dbo.GetStateID('OK')
)
,
fuckinFriends2(fid) as
(
select
(CASE @id1
when userFriend.id1 then userFriend.id2
when userFriend.id2 then userFriend.id1 end)
as fid
from userFriend
where (@id1 = userFriend.id1 or @id1 = userFriend.id2) and userFriend.state = dbo.GetStateID('OK')
)
RETURN (select count( fuckinFriends1.fid) FROM fuckinFriends1, fuckinFriends2 where fuckinFriends1.fid = fuckinFriends2.fid)
END -
hallettim beyler,
withlere ne gerek var, düz yazınca çalıştı kod :D
ALTER FUNCTION [dbo].[GetCommonFriendCount]
(
@id1 int,
@id2 int
)
RETURNS int
BEGIN
RETURN (select Count(fuckinFriends1.fid) FROM (select
(CASE @id2
when userFriend.id1 then userFriend.id2
when userFriend.id2 then userFriend.id1 end)
as fid
from userFriend
where (@id2 = userFriend.id1 or @id2 = userFriend.id2) and userFriend.state = dbo.GetStateID('OK')) as fuckinFriends1,
(select
(CASE @id1
when userFriend.id1 then userFriend.id2
when userFriend.id2 then userFriend.id1 end)
as fid
from userFriend
where (@id1 = userFriend.id1 or @id1 = userFriend.id2) and userFriend.state = dbo.GetStateID('OK')) as fuckinFriends2
where fuckinFriends1.fid = fuckinFriends2.fid)
END
