2016-06-22 9 views
0

Ich habe derzeit 2 Tabellen, in denen ich Daten abrufen muss.Codeigniter aktive Datensatzabfrage mit concat als Join-Parameter

Meine Benutzer Tabelle sieht wie folgt aus: ID | Vorname | letzter_name | Benutzername

Meine Datentabelle sieht wie folgt aus: ID | Dateiname | Doktorname | viewed

Was ich tun muss übereinstimmen, den Vornamen und Nachnamen aus der Tabelle Benutzer mit dem Arzt Namen in der Datentabelle und die Rückgabe der "Dateiname" und "angesehene" Zeilen von diesem.

Ich kann nicht scheinen, um die Abfrage dafür richtig zu bekommen. Ich benutze die aktive Record-Klasse mit Code-Zünder. Ich habe auch versucht, eine separate Funktion zu haben, die den Vor- und Nachnamen bildet und zurückgibt, aber ich kann nicht scheinen, diese Variable dem Verbindungsteil der Abfrage zu übergeben.

$avail = '1'; 
    $this->db->select('*'); 
    $this->db->from("users a"); 
    $this->db->where("username",$username); 
    $this->db->where('CONCAT(first_name, '.', last_name) AS doctorname', FALSE); 


    $this->db->join('data b', "doctor name = b.doctorName", "left"); 

    $result = $this->db->get(); 
    // print_r($this->db->last_query()); 
    return $result->result(); 

Wer weiß, was schief läuft? Dank

+0

Bitte posten Sie Ihre Fehler ... Lassen Sie sich auch die Abfrage durch Hinzufügen der folgenden vor Rückkehr: echo $ this-> db-> last_query(); Ausfahrt; –

Antwort

0

Versuchen Sie, wie dieses

$avail = '1'; 
$this->db->select('a.*,b.filename,b.viewed'); 
$this->db->from("users as a"); 
$this->db->join('data as b', "CONCAT(a.first_name, '.', a.last_name) = b.doctorName", "left"); 
$this->db->where("a.username",$username); 
$result = $this->db->get(); 
// print_r($this->db->last_query()); 
return $result->result(); 
+0

Danke für die Antwort @suyash! Aus irgendeinem Grund wird der Dateiname nicht zurückgegeben, und die Variable $ doctorname in meiner Sicht verursacht einen Fehler "undefined Eigenschaft". Gibt es eine Möglichkeit, bei der Verkettung ein Leerzeichen zwischen first_name und last_name zu setzen? Ich denke, das könnte sein, was es wirft, da zwischen ihnen in der Datentabelle ein Leerzeichen steht. – user

+0

concat fügt ein '.' mögen. Wenn first_name ist Suyash und last_name ist Maurya, dann wird concat als Suyash.Maurya von einer anderen Tabelle vergleichen. Wenn Sie Leerzeichen in den Namen einfügen möchten, lassen Sie einfach ein Leerzeichen wie zum Beispiel: CONCAT (a.vorname, '', a.letzter_name) statt '.'. – Suyash