2016-04-28 21 views
1

Ich habe eine SQL-Abfrage, die den durchschnittlichen Kostenpreis aus der Tabelle zurückgeben sollte.Laravel 5.1 Durchschnitt

Ich habe ein paar Joins, weil ich bestimmte Status aus dem Auftragskopf ziehen muss.

Siehe eloquente Abfrage.

return $avgsell = DB::table('STK_STOCK') 
     ->join('ORD_DETAIL','ORD_DETAIL.OD_ORDER_NUMBER','=','ORD_HEADER.OH_ORDER_NUMBER') 
     ->where('ORD_HEADER','ORD_DETAIL.OD_STOCK_CODE','=',$code)->where('ORD_HEADER.OH_PRIORITY','<>',4)->where('ORD_DETAIL.OD_QTYORD','<>','0') 
     ->avg('ORD_DETAIL.OD_UNITCST'); 

bekomme ich folgende Fehler

SQLSTATE[42000]: [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Incorrect syntax near 'ORD_HEADER'. (SQL: select avg([ORD_DETAIL].[OD_UNITCST]) as aggregate from [STK_STOCK] inner join [ORD_DETAIL] on [ORD_DETAIL].[OD_ORDER_NUMBER] = [ORD_HEADER].[OH_ORDER_NUMBER] where 0005-20-02-01 [ORD_HEADER] = ORD_DETAIL.OD_STOCK_CODE [ORD_HEADER].[OH_PRIORITY] <> 4 and [ORD_DETAIL].[OD_QTYORD] <> 0)

Antwort

1

In dem Zustand der Fehler kommt, weil Sie drei params sind vorbei

->where('ORD_HEADER','ORD_DETAIL.OD_STOCK_CODE','=',$code) 

entfernen ORD_HEADER oder ORD_DETAIL.OD_STOCK_CODE

die endgültige Code

return $avgsell = DB::table('STK_STOCK') 
     ->join('ORD_DETAIL','ORD_DETAIL.OD_ORDER_NUMBER','=','ORD_HEADER.OH_ORDER_NUMBER') 
     ->where('ORD_DETAIL.OD_STOCK_CODE','=',$code)->where('ORD_HEADER.OH_PRIORITY','<>',4)->where('ORD_DETAIL.OD_QTYORD','<>','0') 
     ->avg('ORD_DETAIL.OD_UNITCST'); 
+0

Danke Veerendra - Ich habe für Ihr Beispiel geändert, aber ich habe den folgenden Fehler: Die mehrteilige Kennung "ORD_HEADER.OH_ORDER_NUMBER" konnte nicht gebunden werden. –

+0

können Sie mir Ihre zwei Tabellenmodelle zeigen –

+0

Verbinden Sie drei Tabellen? Ich denke, dass Ihre Abfrage nicht korrekt ist.paste Ihre Modelle hier oder überprüfen Sie den unten stehenden Link [http://stackoverflow.com/questions/7314134/the-multi-part-identifier-could-not-bebound] –