我有两张桌子,第一张是朋友,第二张是帖子

时间:2016-12-21 07:53:17

标签: php mysql sql database view

请找到我用于隔离墙的所有表格。

  1. 我想检查此人是否在我的朋友列表中。
  2. 如果他在我朋友列表中,请显示与该朋友相关的帖子。
  3. 候选人表

    CREATE TABLE IF NOT EXISTS `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,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
    

    朋友

    CREATE TABLE IF NOT EXISTS `friends` (
      `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,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
    

    帖子

    CREATE TABLE IF NOT EXISTS `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` date NOT NULL,
      `like` int(200) NOT NULL,
      PRIMARY KEY (`post_id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
    

    查看帖子的视图

    CREATE TABLE IF NOT EXISTS `post_view` (
    `post_id` int(200)
    ,`post_email` varchar(200)
    ,`post` varchar(2000)
    ,`post_image` varchar(500)
    ,`id` int(200)
    ,`name` varchar(200)
    ,`email` varchar(200)
    ,`designation` varchar(200)
    ,`pic` varchar(200)
    );
    

2 个答案:

答案 0 :(得分:0)

问题1 ans: - 从候选人中选择*,其中id为(从朋友中选择friend_id,其中cand_id = 2)或id(从朋友中选择cand_id,其中friend_id = 2)

这里,我假设cand_id列是向其他候选人发送请求,所以' friend_id' column是最终候选id作为朋友id。 此子查询首先检查cand_id并选择friend_id到外部查询结果。 或条件检查到friend_id比较并选择cand_id到外部查询结果。

例子。         你有一个候选人。你的候选人ID是1。         其他候选人ID是2。         我也是候选人,所以我的候选人身份是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(从其中id的候选人中选择id(从朋友中选择friend_id,其中cand_id = 3)或id(从朋友中选择cand_id,其中friend_id = 3))

        here, only display to my friends list post

答案 1 :(得分:0)

查询第一个问题可能是这样的: SELECT * FROM候选人c,朋友f WHERE c.name = f.name; 这基本上收集了朋友表中也存在的所有候选名称。您可以使用AND扩展第三个表。

然而,这是非常基本的SQL查询,你本应该能够使用谷歌找到它。

或使用我下面的答案,在我输入此答案时发布。