2016-06-14 36 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');

我覺得很傻。