2016-06-14 4 views
-1

Ich versuche, eine Mysql-Abfrage erstellen, die zwei Tabellen zusammen und greifen einige Daten aus beiden Tabellen zusammen. Ich hätte gerne eine where-Anweisung, die auf meiner Join-Anweisung steht.Mysql WHERE auf der JOIN und nicht auf gesamte Abfrage

Hier ist meine Aussage für Klarheit:

$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'); 

Ich mag würde mein zweites wo nur greifen Noten (und GROUP_CONCAT), wo aktiv 1. Das Problem, dass selbst gleich ist, wenn es keine Hinweise, dass sind aktiv Ich möchte immer noch die id, FirstName und LastName von center_contacts greifen. Ohne die zweite, wo dies funktioniert, jedoch gibt es alle Noten trotz einiger inaktiv. Wenn ich das behalte, wo es nicht einmal diese Daten zurückgibt.

Das lässt mich denken, dass wo speziell für den JOIN sein muss (vielleicht in Klammern oder so?).

Ist das möglich und wenn ja, wie könnte ich das erreichen? Vielen Dank.

+1

Normalerweise sind nur die Bedingungen in den ON-Klauseln der Joins ausreichend, aber wenn das nicht funktioniert, können Sie die verknüpften Tabellenreferenzen in Unterabfragen konvertieren; obwohl ich nicht sicher bin, wie einfach das mit dem 'db->' Zeug ist. – Uueerdo

Antwort

0

@Uueerdo war genau richtig. , Alles, was ich tun musste, war

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

ich dumm fühlen.