2016-06-14 38 views
-1

我想创建一个Mysql查询,将两个表连接在一起,并从这两个表中获取一些数据。我想在我的加入声明中有一个where语句。Mysql WHERE JOIN上,而不是整个查询

这里是我的清晰声明:

$this->db->select('center_contacts.id, FirstName, LastName, 
GROUP_CONCAT(center_contacts_notes.id ORDER BY center_contacts_notes.date_added DESC SEPARATOR "~`") as note_ids, 
GROUP_CONCAT(center_contacts_notes.note ORDER BY center_contacts_notes.date_added DESC SEPARATOR "~`") as notes, 
GROUP_CONCAT(center_contacts_notes.date_added ORDER BY center_contacts_notes.date_added DESC SEPARATOR "~`") as note_dates'); 

$this->db->from('center_contacts'); 
$this->db->where('center_contacts.id', $id); // get a specific contact and their notes 
$this->db->join('center_contacts_notes', 'center_contacts_notes.contact_id = '.$id.'', 'left'); 
$this->db->where('center_contacts_notes.active', 1); // only grab active notes 
$this->db->group_by('center_contacts.id'); 

我想我的第二个地方只抓住笔记(和GROUP_CONCAT),其中活跃等于1的问题是,即使有没有注意到,我仍然想要从center_contacts抓住id,FirstNameLastName。如果没有第二个这样的工作,但是它会返回所有的音符,尽管有些音符不活动如果我保留它甚至不会返回该数据的位置。

这使我认为需要特定于JOIN的位置(可能在圆括号或其他位置?)。

这是可能的,如果是这样,我怎么能做到这一点?谢谢。

+1

通常只需在连接的ON子句中包括这些条件就足够了,但如果这样做不起作用,则可以将连接的表引用转换为子查询;尽管我不确定'db->'的东西有多容易。 – Uueerdo

回答

0

@Uueerdo在现场。我所要做的就是,

$this->db->join('center_contacts_notes', 'center_contacts_notes.contact_id = '.$id.' AND center_contacts_notes.active = 1', 'left');

我觉得很傻。