我正在连接三个表,但是我想分别对另外两个表使用其中一个表的值

z5btuh9x  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(237)

我有三个表格问题,答案和意见,其中有多个答案,同一个问题和许多意见,以一个单一的答案。
我想展示谁回答了这个问题,谁对这个答案发表了评论。
以及我想显示谁回答了用户和用户谁评论了相同的答案。
所以,请帮助我加入同一个用户表两次在两个表的答案和意见。
表:问题:id、文本、用户id(fk)
表:答案:id、que\ U id(fk)、user\ U id(fk)、text
表:注解:id、ans\u id(fk)、user\u id(fk)、text
表:用户:id,名称

$this->db->select('answers.id as aid,
                   answers.user_id as auser_id,
                   answers.text as atext,
                   comments.id as cid,
                   comments.user_id as cuser_id,
                   comments.text as ctext,
                   users.id as uid,
                   users.name as uname');
$this->db->from('answers');
$this->db->join('users','answers.user_id = users.id', 'left');
$this->db->join('ans_comments','answers.id = comments.ans_id', 'left');
$this->db->join('users','comments.user_id = users.id', 'left');
$this->db->where('que_id','1');
return $this->db->get();

我的问题是:
我得到的所有评论都是同一个用户。
我需要不同的评论员发表不同的评论。

dluptydi

dluptydi1#

如果要两次联接同一个表,则应使用不同的名称:
测试

$this->db->select('A.id AS A_id,
                   A.uid AS A_uid,
                   A.text AS A_text,
                   C.id AS C_id,
                   C.uid AS C_uid,
                   C.text AS C_text,
                   UA.id AS UA_id,
                   UA.name AS UA_name,
                   UC.id AS UC_id,
                   UC.name AS UC_name');
$this->db->from('answers AS A');
$this->db->join('comments AS C','C.aid = A.id', 'left');
$this->db->join('users AS UA','A.uid = UA.id', 'left');
$this->db->join('users AS UC','C.uid = UC.id', 'left');
$this->db->where('qid', 1);
$query = $this->db->get();

$result = $query->result_array();

如果您注意到我为每个连接使用了不同的名称,并使用该名称来获取相关数据,那么如果您希望使用用户名作为答案,您将使用 UA.name 如果你想用它来评论你的用户 UC.name ,它为您提供了所需的所有灵活性。

相关问题