2016-11-25 1 views
0

läßt suppose anzuzeigenWie neuesten einzigartigen Datensatz in mysql codeigniter

id |  mobile_no |  date 
-------------------------------------------   
    1 |  9999999999 | 11-11-2016 

    2 |  8888888888 | 12-11-2016 

    3 |  9999999999 | 13-11-2016 

    4 |  9999999999 | 16-11-2016 

    5 |  8888888888 | 20-11-2016 

    6 |  8888888888 | 22-11-2016 

Jetzt, als ich mit MySQL Query verschiedenen verwende i abrufen: -

id |  mobile_no |  date 
-------------------------------------------  
    1 |  9999999999 | 11-11-2016 

    2 |  8888888888 | 12-11-2016 

Während ich abrufen möchte: -

id |  mobile_no |  date 
-------------------------------------------  
    4 |  9999999999 | 16-11-2016 

    6 |  8888888888 | 22-11-2016 

Bitte helfen Sie mir, welche Abfrage muss ich in Codeigniter mysql für den Zugriff über Datensätze verwenden?

unten ist mein Modell Abfrage -

$this->db->select('*'); 

    $this->db->from('miscall_records'); 

    $this->db->distinct(); 

    $this->db->group_by('mobnos'); 

    $this->db->order_by("id", "desc"); 
+0

gut - könnten Sie ** die Abfrage in Frage? Ich fürchte, ich kann nicht telepathisch debuggen. –

+0

nicht als Kommentar. ** Edit ** Ihre Frage, um zusätzliche Informationen zu enthalten –

+0

Nicht sicher, wie es auf CI getan werden könnte, aber die SQL sollte des Musters wie im Dokument hier sein http://dev.mysql.com/doc/refman/5.7/ en/example-maximum-column-group-row.html –

Antwort

-2

Sie group by-Klausel zu Gruppenwerten von Mobil nicht verwenden können. distinct Keyword wird hier nicht funktionieren.

0

Wenn Sie den Datensatz mit der jeweils höchsten ID verwenden möchten, müssen Sie einen anderen Ansatz verwenden.
müssen Sie zuerst die höchsten IDs für jede Nummer über eine GROUP BY mit der entsprechenden Aggregationsfunktion MAX auswählen und dann die Tabelle selbst mit diesen Schlüsseln verbinden.

SELECT values.* FROM 
(SELECT MAX(id) AS id FROM miscall_records GROUP BY mobile_no) AS keys 
LEFT JOIN miscall_records AS values 
ON keys.id = values.id 
0

Ihre erwartete SQL-Abfrage ist:

select a.id, a.mobile_no, a.date from miscall_records a 
where a.id = (select max(b.id) from miscall_records b 
where b.mobile_no = a.mobile_no) group by a.mobile_no 

mit aktivem Records ist:

$this->db->select('a.id, a.mobile_no, a.date'); 
$this->db->from('miscall_records a'); 
$this->db->where('a.id = (select max(b.id) from miscall_records b where b.mobile_no = a.mobile_no)'); 
$this->db->group_by('a.mobile_no');  
$query = $this->db->get(); 

Oder verwenden Sie nur max:

select max(a.id), a.mobile_no, a.date from miscall_records a group by a.mobile_no 

Aktive Datensätze:

$this->db->select('max(a.id), a.mobile_no, a.date'); 
$this->db->from('miscall_records a'); 
$this->db->group_by('a.mobile_no');  
$query = $this->db->get(); 
Verwandte Themen