Ich versuche, wie finde ich MAX
auf Laravel Querybuilder oder Eloquent verwenden können Anweisung verbinden, zum Beispiel:Laravel MAX verwenden, um auf Join-Anweisung
$userShoppings = \DB::table('shoppings')
->join('products', 'shoppings.product_id', '=', 'products.id')
->select('shoppings.*', 'products.name','products.amount','max(shoppings.ordering_count)')
->where('shoppings.user_ordering_ip', request()->ip())
->get();
in diesem Code i ordering_count
von shoppings
Tabelle max erhalten möchten auf select
Methode, aber ich diese Fehlermeldung erhalten:
Column not found: 1054 Unknown column 'max(shoppings.ordering_count)' in 'field list'
könnte jeder Körper mir helfen, dieses Problem zu lösen?
UPDATE für Paste falsches Ergebnis
Collection {#449 ▼
#items: array:3 [▼
0 => {#446 ▼
+"id": 11
+"product_id": 25
+"user_ordering_ip": "127.0.0.1"
+"ordering_count": 3
+"created_at": "2017-12-25 09:41:01"
+"updated_at": "2017-12-25 09:41:01"
+"amount": "128,440"
+"max(shoppings.ordering_count)": 3
}
1 => {#445 ▼
+"id": 10
+"product_id": 26
+"user_ordering_ip": "127.0.0.1"
+"ordering_count": 1
+"created_at": "2017-12-25 09:32:13"
+"updated_at": "2017-12-25 09:32:13"
+"amount": "137,614"
+"max(shoppings.ordering_count)": 1
}
2 => {#452 ▼
+"id": 9
+"product_id": 49
+"user_ordering_ip": "127.0.0.1"
+"ordering_count": 2
+"created_at": "2017-12-24 17:59:29"
+"updated_at": "2017-12-24 18:35:25"
+"amount": "110,092"
+"max(shoppings.ordering_count)": 2
}
]
}
Ich bekomme diesen Fehler: 'Syntaxfehler oder Zugriffsverletzung: 1140 Mischen von GROUP Spalten (MIN(), MAX(), COUNT(), ...) ohne GROUP Spalten ist illegal, wenn es keine gibt GROUP BY-Klausel (SQL: Wählen Sie 'shoppings'. *,' Products' .name', 'products'.' Amount', max (shoppings.ordering_ zählen) von 'shoppings' inner fuge' products' auf 'shoppings'' product_id' = 'products'' id' wo 'shoppings'' user_ordering_ip' = '127.0.0.1') ' –
Wahrscheinlichkeiten sind das Standardverhalten von Ihre Datenbank hat 'ONLY_FULL_GROUP_BY' auf' ON' gesetzt. In diesem Fall müssen Sie, wenn Sie Aggregatfunktionen wie MAX verwenden, nach den anderen Spalten in Ihrer SELECT-Anweisung gruppieren. Da Sie aber 'shoppings. *' Auswählen, müssen Sie entweder nur die Spalten auswählen, die Sie benötigen, und diese zur 'group by'-Klausel hinzufügen, oder Sie müssen jede der Spalten in' shoppings' auflisten Ihre "Gruppe von" sowie – djt
Problem des Codes gelöst, aber ich bekomme ein falsches Ergebnis, zum Beispiel mit 'MAX' Ich möchte Max von' shoppings.ordering_count' in allen Ergebnis nicht Spalten erhalten, können Sie meinen Beitrag überprüfen? Vielen Dank –