2017-09-13 7 views
0

Ich habe diese SQL-Abfrage und im Moment weiß ich nicht, wie das mit dem Bauherr Larven Abfrage erstellenSQL Query in Laravel Query Builder

SELECT h1.Name, h2.Torvorlage from 
(SELECT Name, Player_ID FROM `Spieler` WHERE Vereins_ID = 1) h1 
left JOIN 
(SELECT Torvorlage, Player_ID FROM `SpielerStats` left join Spielplan on (SpielerStats.Spielplan_ID = Spielplan.Spielplan_ID) WHERE Spielplan.Spielplan_ID = 1 and Spielplan.Spieltag = 2) h2 
on h1.Player_ID = h2.Player_ID 

Kann mir jemand ein Beispiel geben, wie dies zu bauen?

+0

Fügen Sie hinzu, was Sie versucht haben. Es wird Ihnen helfen, eine bessere Lösung zu finden. – TheChetan

Antwort

0

Versuchen Sie es.

DB::table('Spieler')->where('Vereins_ID','=',1) 
     ->join('SpielerStats','SpielerStats.Player_ID','=','Spieler.Player_ID','left') 
     ->select('SpielerStats.Torvorlage','Spieler.Name') 
     ->join('Spielplan','SpielerStats.Spielplan_ID','=','Spielplan.Spielplan_ID','left') 
     ->where('Spielplan.Spielplan_ID','=',1) 
     ->where('Spielplan.Spieltag','=',2)->get(); 

Oder

$d = DB::raw('(SELECT Torvorlage, Player_ID FROM `SpielerStats` left join Spielplan on (SpielerStats.Spielplan_ID = Spielplan.Spielplan_ID) WHERE Spielplan.Spielplan_ID = 1 and Spielplan.Spieltag = 2) as h2') 


DB::table('Spieler') 
    ->select('Spieler.Name','h2.Torvorlage') 
    ->leftJoin($d, 'h2.Player_ID', '=', 'Spieler.Player_ID') 
    ->where('Vereins_ID','=',1) 
    ->get(); 
+0

das Ergebnis ist leer [] – Flamms

+0

@Flamms bitte überprüfen Ich habe 1 weitere Lösung hinzugefügt. Hoffe es wird dir helfen. – Nikita

0

Um eine bessere Antwort zu erhalten, sollten Sie erklären, was Ihre Abfrage tut. Wie ist die Beziehung zu diesen Tabellen? Meiner Erfahrung nach, als ich eine komplizierte SQL-Abfrage für die Konvertierung in Eloquent hatte, stellte ich fest, dass das Definieren der Beziehungen auf den Modellen das Problem löste.

0

Ich löste dies mit DB: Wählen

$spielerstats = DB::Select('SELECT h1.Name, h2.Torvorlage from 
(SELECT Name, Player_ID FROM `Spieler` WHERE Vereins_ID = 1) h1 
left JOIN 
(SELECT Torvorlage, Player_ID FROM `SpielerStats` left join Spielplan on (SpielerStats.Spielplan_ID = Spielplan.Spielplan_ID) WHERE Spielplan.Spielplan_ID = 1 and Spielplan.Spieltag = 1) h2 
on h1.Player_ID = h2.Player_ID'); 

Ich bin nicht sicher, ob dies der beste Weg ist, aber es funktioniert.