我有3个表格问题,答案和评论,其中同一问题有多个答案,而单个答案有很多评论。
我想展示谁回答了这个问题,以及谁评论了这个答案。
我也想向用户显示答复的用户和对相同答案发表评论的用户。
因此,请帮助我在表的答案和注释中两次加入同一用户表。
表格:问题:id,文本,user_id(fk)
表格:答案:id,que_id(fk),user_id(fk),文本
表格:注释:id,ans_id(fk),user_id(fk),文本
表:用户: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();
我的问题是:
我得到所有评论的相同用户。
我想要不同的评论者来发表不同的评论。
答案 0 :(得分:1)
如果要两次连接同一张表,则应使用其他名称:
测试
$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
进行注释,即可为您提供所需的所有灵活性。