0

ユーザー テーブル:

ID, UserName, Location

次の表:

ID, User_ID, User_Follow_ID

--User_ID --> ID of user who is following 

--User_Follow_ID --> ID of user being followed

Username場所が「ユーザー」と同じ人の場所を取得したいのですが、ユーザーがそれらをフォローしているかどうかも知りたいです。同じ場所にいる人を取得するために私が書いたクエリは次のとおりです。

String query = @"
    select * 
    from User 
    where Location = (
        select Location 
        from Users 
        where UserName ='abc'
    ) and UserName != 'abc'
";

このクエリを変更して、Follow テーブルにも接続するか、そこからのデータを含める必要があります。

PostgreSql DB を使用し、C# でコードを書いています。ヘルプや提案をいただければ幸いです。

4

1 に答える 1

1

を使用inner joinして同じ場所にいる他のユーザーをleft join検索し、 を使用して次の表で一致する可能性のあるユーザーを取得できます。

select  you.UserName as You
,       case
        when fme.User_Follow_ID is not null then 'True'
        else 'False'
        end as YouFollowMe
,       case
        when fyou.User_Follow_ID is not null then 'True'
        else 'False'
        end as IFollowYou
from    User me
join    User you
on      you.Location = me.Location
        and you.UserName <> me.UserName
left join
        Following fme
on      fme.User_Follow_ID = me.User_ID
        and fme.User_ID = you.User_ID
left join
        Following fyou
on      fyou.User_Follow_ID = you.User_ID
        and fyou.User_ID = me.User_ID
where   me.UserName = 'abc'
于 2012-12-28T11:48:30.287 に答える