我有两张桌子,第一张是朋友,第二张是发帖
Posted
技术标签:
【中文标题】我有两张桌子,第一张是朋友,第二张是发帖【英文标题】:I am having 2 tables, 1st is friends and 2nd is post 【发布时间】:2016-12-21 07:53:16 【问题描述】:请找出我用来做墙的所有桌子。
-
我想查看此人是否在我的好友列表中。
如果他在我的朋友列表中,则显示与该朋友相关的帖子。
候选人表
如果不存在`candidate`,则创建表( `id` int(200) NOT NULL AUTO_INCREMENT, `name` varchar(200) NOT NULL, `email` varchar(200) NOT NULL, `designation` varchar(200) NOT NULL, `pic` varchar(200) NOT NULL, `password` varchar(200) NOT NULL, 主键(`id`) ) 引擎=InnoDB 默认字符集=latin1 AUTO_INCREMENT=5 ;朋友
如果不存在“朋友”,则创建表( `id` int(200) NOT NULL AUTO_INCREMENT, `cand_id` varchar(200) NOT NULL, `request_date` datetime(6) NOT NULL, `friend_id` varchar(200) NOT NULL, `accept_date` varchar(200) NOT NULL, 主键(`id`) ) 引擎=InnoDB 默认字符集=latin1 AUTO_INCREMENT=3 ;帖子
如果不存在 `post` 则创建表 ( `post_id` int(200) NOT NULL AUTO_INCREMENT, `cand_id` varchar(200) NOT NULL, `post_email` varchar(200) NOT NULL, `post` varchar(2000) NOT NULL, `post_image` varchar(500) NOT NULL, `post_date` 日期不为空, `like` int(200) NOT NULL, 主键(`post_id`) ) 引擎=InnoDB 默认字符集=latin1 AUTO_INCREMENT=11 ;查看帖子
如果不存在 `post_view` 则创建表( `post_id` 整数(200) ,`post_email` varchar(200) ,`post` varchar(2000) ,`post_image` varchar(500) ,`id` int(200) ,`名称` varchar(200) ,`email` varchar(200) ,`名称` varchar(200) ,`pic` varchar(200) );【问题讨论】:
我看不到任何尝试过的查询。有什么错误还是什么?使用INNER JOIN
即可。
【参考方案1】:
问题 1 回答:- select * from Candidate where id in(selectfriend_id from friends where cand_id=2) or id in (select cand_id from friends wherefriend_id=2)
在这里,我假设 cand_id 列是向其他候选人发送请求,所以 'friend_id' 列最终是作为朋友 ID 的候选人 ID。 这个子查询首先检查 cand_id 并选择friend_id 到外部查询结果。 或条件检查到friend_id比较并选择cand_id到外部查询结果。
例子。 你有一个候选人。你的候选人 ID 是 1。 其他候选人 id 为 2。 我也是候选人,所以我的候选人 ID 是 3
after your have send request to candidate id 2
now table entry is
cand_id=1 friend_id=2
now, candidate 2 send friends request to candidate 3
table entry is
cand_id=2 friend_id=3
now this scenario
candidate 2 =total friends is 2 (candidate 1 & 3 )
问题:- 2 select * from post where cand_id in (select id from Candidate where id in(selectfriend_id from friends where cand_id=3) or id in (select cand_id from friends wherefriend_id=3))
here, only display to my friends list post
【讨论】:
【参考方案2】:第一个问题的查询可能类似于: SELECT * FROM 候选人 c, 朋友 f WHERE c.name = f.name; 这基本上收集了朋友表中也存在的所有候选名称。您可以使用 AND 对第三个表进行扩展。
但是,这是非常基本的 SQL 查询,您应该可以使用一些 google 找到它。
或使用我下方的答案,在我输入此答案时发布。
【讨论】:
以上是关于我有两张桌子,第一张是朋友,第二张是发帖的主要内容,如果未能解决你的问题,请参考以下文章