2017-03-05 4 views
1

Ich habe eine Ergebnistabelle mit adm_no, subject_id, exam_id und score Feldern. Ich habe die Daten mit der Methode updateOrCreate in Laravel 5.4 eingefügt.So geben Sie Daten mithilfe des Abfrage-Generators aus, während Duplikate entfernt werden

Wenn ich die Daten abrufen, bekomme ich immer noch Duplikate. z.B. Wenn ein Benutzer Markierungen für Instanz 2 Schüler für ein bestimmtes Thema einfügt und sie für die gleichen Schüler und das gleiche Thema wiederholt, sollte ich die letzte Zeile mit allen Ergebnissen erhalten. Hier

ist eine Probe meiner Anfrage:

public function searchStudent() 
{ 
    $exam = Exam::all(); 
    $term = Term::all(); 

    $a = Input::get('adm_no'); 
    $e = Input::get('exam_id'); 
    $t = Input::get('term_id'); 
    $y = Input::get('year'); 

    $results = DB::table('results') 
     ->select(DB::raw('DISTINCT(subject_id)')) 
     ->where('adm_no', 'LIKE', '%' . $a . '%') 
     ->where('exam_id','LIKE', '%' . $e . '%') 
     ->where('term_id', 'LIKE', '%' . $t . '%') 
     ->where('year', 'LIKE', '%' . $y . '%') 
     ->orderBy('created_at', 'desc') 
     ->get(); 

    dd($results); 
} 

Antwort

0

Versuchen Sie die folgende Abfrage:

$results = DB::table('results') 
     ->groupBy('subject_id') 
     ->where('adm_no', 'LIKE', '%' . $a . '%') 
     ->where('exam_id','LIKE', '%' . $e . '%') 
     ->where('term_id', 'LIKE', '%' . $t . '%') 
     ->where('year', 'LIKE', '%' . $y . '%') 
     ->orderBy('created_at', 'desc') 
     ->get(); 
+0

Sein nicht noch den letzten Wert Kommissionierung. Nehmen wir an, der erste Datensatz für adm_no: 1, subject_id: 1 und hatte eine Punktzahl von 35 und eine zweite Punktzahl für den gleichen Schüler und Fach war 40, wie kann ich 40 auswählen und 35 in meiner Abfrage ignorieren. –

+0

Oh, das ändert die Frage ein wenig, versuchen Sie es [diese Frage] (http://stackoverflow.com/questions/1313120/retrieving-the-last-record-in-each-group) – Desh901

0

i auf die Frage mehr Forschung getan, und das ist, was ich für mich habe zu arbeiten.

Frage

 public function searchStudent(){ 
     $a= Input::get('adm_no'); 
     $e= Input::get('exam_id'); 
     $t= Input::get('term_id'); 
     $y= Input::get('year'); 
     $results=DB::table('results')->distinct('subject_id') 
     ->where('adm_no', $a) 
     ->where('exam_id', $e) 
     ->where('term_id',$t) 
     ->where('year',$y) 
     ->groupBy('subject_id') 
     ->latest('subject_id') 
     ->get(); 
     dd($results); 
      } 
Verwandte Themen