任何人都可以为这个问题编写选择查询吗?

时间:2011-04-12 17:54:13

标签: asp.net sql vb.net visual-studio-2008 sql-server-2005

我有两个表,即mit_follow& mit_tweets

在mit_follow表格结构中:

Id    UserName            followers          Following

1     dobriyalji          manish             Sachin
2     dobriyalji          karthik            parul

在mit_tweets表格结构中:

Id        UserName          tweets

1         dobriyalji        hi everybody
2         manish            hello all m karthik

我想写这个选择查询..

如果我使用用户名dobriyalji登录....并在mit_tweets表中发布推文,那么dobriyalji和他的所有粉丝都可以查看他们的消息和所有关注者msgs将被dobriyalji查看...我使用gridview显示mit_tweets表在webform ....

如果有任何新会员登录他们的帐户并发布推文,那么在gridview中只会显示新成员的消息...

任何正文都可以为此编写选择查询吗?

2 个答案:

答案 0 :(得分:2)

我不确定你的mit_follow表。你的粉丝和关注列并没有多大意义。当然桌子看起来应该更像:

id user            user_followed
** *************** ******************
1  dobriyalji      Sachin
2  dobriyalji      parul
3  manish          dobriyalji      
4  karthik         dobriyalji

查询

会容易得多

答案 1 :(得分:0)

SELECT mit_tweets.* 
FROM mit_tweets 
WHERE username = 'dobriyalji' 

UNION 

SELECT t2.* 
FROM mit_tweets 
    INNER JOIN mit_follow ON mit_tweets.Username = mit_follow.Username 
    INNER JOIN mit_tweets t2 ON mit_follow.following = t2.Username 
WHERE mit_tweets.username = 'dobriyalji'

这是你的意思吗?

或许这个:

select *
from mit_tweets
where Username = 'dobryialji' 
or username in ( select mit_follow.followers from mit_follow where mit_follow.username = mit_tweets.username )

这对我没有意义。如果我是dobryialji,那么我想看到自己的推文,以及我关注的人的推文。如果这是真的,那么将mit_follow.followers更改为mit_follow.following。