2016-06-15 18 views
1

Ich muss nur den letzten Datumseintrag für eine Person in einer Tabelle anzeigen, die aus verknüpften Tabellen stammt.Codenummer: Nur letzten Eintrag anzeigen

Ich scheine nur in der Lage, den ersten Eintrag oder alle anzuzeigen.

-Controller

public function session_view($id) 
    { 
     $data['main_view'] = 'session_view'; 
     $data['view'] = $this->Swim_model->CRUD_read_session($id); 
     $this->load->view('load_view',$data); 
    } 

Modell

public function CRUD_read_session($sessionid) 
    { 
     return $this->db->select('*') 
      ->from('sessionsandswimmers') 
      ->join('child', 'ID = SwimmersID') 
      ->join('swimmersawards', 'PersonID = ID') 
      ->join('awards', 'AwardID = AwardsID') 
      ->order_by('LastName') 
      ->order_by('DateAwarded') 
      ->where('SessionID', $sessionid) 
     ->get(); 
    } 

Ansicht

foreach ($view->result() as $row) 
    { 
      echo '<tr>'.$row->FirstName.'</td><td'.$row->LastName.'</td><td>'.$row->Description.'</td><td>'.$row->DateAwarded.'</td></tr>'; 
    } 

Ergebnis

Wie Sie sehen können, gibt es für jede Person mehrere Einträge (außer 1.).

Ich muss nur die neuesten Datumseingabe für jede Person anzeigen.

Also sollte es nur 4 Einträge geben.

enter image description here

Tabellenstruktur

sessionsandswimmers - Jede Session hat 4 Schwimmer

1 LFDNR Primary int (11) Keine Keine AUTO_INCREMENT
2 SessionID int (11) Keine Keine
3 SwimmersID int (11) Nein Kein
4 SessionSeasonID int (11) Nein Kein
5 Jahre int (11) Nein Keine
6 LocationSS int (11) Nein Kein

Kind - bekommt der Schwimmer

nennt

swimmersawards - mehrere Einträge pro Kind

1 PersonID int (11) Nein Kein
2 AwardsID int (11) keine keine
3 DateAwarded Datum keine keine

Auszeichnungen - bekommt den Namen des Preises

+0

Sie sollten eine Gruppe von in Ihrer SQL-Abfrage hinzufügen – Efekan

Antwort

0

Änderung ->order_by('DateAwarded') zu ->order_by('DateAwarded','DESC'). Sie müssen angeben, welche Art von Bestellung Sie wünschen. Und für nur eine Teilnahme pro Person Nutzung:

->group_by('FirstName,LastName')

+0

Gibt mir immer noch nur den ersten Eintrag. –

+0

vielleicht weil der Sitzungs-ID-Wert? Weil das Stück Code, das ich gepostet habe, tun sollte, was du verlangst. – Dray

+0

Die SessionID ist für alle gleich. –

0

Wenn ich richtig verstanden habe, ist das Ergebnis Sie angezeigt ist die Tabellenstruktur. Wo möchten Sie den neuesten Eintrag nach Datum für jeden "Namen". Wenn dieses Recht dann folgen,

SELECT DISTINCT `name` FROM `<your-joined-tables>` order by `date` DESC 

Leider bin ich nicht gut mit CI Query Builder. Ich hoffe, es funktioniert.

+0

NUR der letzte Eintrag, daher sollten nur vier Zeilen angezeigt werden, eine für jede Person. –

+0

Meinst du nicht drei Namen? Evie, Amita und Harry. Wie auch immer, Select DISTINCT sollte den Trick machen. – Roy

+0

Es gibt 2 Evie in diesem Beispiel, Nachname ist anders. –

Verwandte Themen