T-Sql Hakkında Soru

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nessaj
    nessaj's avatar
    Kayıt Tarihi: 03/Mayıs/2010
    Erkek

    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 

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nessaj
    nessaj's avatar
    Kayıt Tarihi: 03/Mayıs/2010
    Erkek

    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

Toplam Hit: 839 Toplam Mesaj: 2