我被困在SQL查询中。这是关于获取帖子以显示用户,这是由与他连接的人共享的。Sql查询获取用户的帖子
我有一个表格,显示两个用户之间的连接。两个用户之间可以有5种类型的连接:
- 朋友;
- 亲戚;
- 同事;
- 同学;
- 熟人。
任何两个用户可以在一个以上的关系被连接,使得该表具有7列,它们是:现在
first_user_id (int)
second_user_id (int)
friends (bool)
relative (bool)
colleague (bool)
classmate (bool)
acquaintance (bool)
,用户可以共享一个柱,它可以是一个想法,一个照片,视频或任何其他内容,但现在,让我们考虑他可以分享一个想法。他可以在他的帖子上设置隐私,他可以指定只有他的亲属或朋友才能访问帖子。为此,我有三张桌子。
Shared
- 所有的共享项目:id (int auto_incr p_key)
;type (text)
- 在此行的帖子的类型,例如,它可以是'thought'
或'photo'
或'video'
。现在,它将是'thought'
;item_id (int)
-id
要在相应的表中寻找的项目,现在,它是thought
表;shared_by (int)
-id
谁分享这个项目time (datetime)
用户 - 当思想被张贴
Thought
日期/时间 - 这是用于存储所有的思想项目表,将存在用于存储每种类型的物品的单独的表格,例如,photo
,video
等。:id (int auto_incr p_key)
content (text)
- 思想
Shared_with
的内容: - 在id
值post_id (int p_key)
的shared
表将插入此public (bool)
- 如果该值为true,这是一条公开信息,并能与大家friends (bool)
共享 - 如果为true,这个职位可以与人分享谁与谁张贴relative (bool)
的一个朋友 - 同上亲戚colleague (bool)
- 同为同事classmates(bool)
- 同为同学acquaintance (bool)
- 同为熟人
现在的问题是,我想取前20名的帖子这是公开的或共享连接到用户的人。用户只能看到他有权访问的帖子,以及哪些帖子来自他的联系人列表。你能告诉我怎么用单个或多个Sql查询来完成它。也建议在模式中进行一些改进。
这听起来更像是“请执行我的设计”,而不是“请帮助我,我有这个技术问题”。这个论坛更多的是关于后一种请求。我建议发布迄今为止已尝试过的内容,我们可以帮助您解决更具体的问题。 – Milimetric 2012-01-06 21:38:41
你使用的是什么db – 2012-01-06 22:34:49
我正在使用MySql – Sourabh 2012-01-07 09:34:47