COUNT-Feld falsch oder syntax error
Was wäre die Fehlermeldung, wenn ich folgende Fehlermeldung
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[07002]: [Microsoft][ODBC Driver 11 für SQL Server]COUNT-Feld falsch oder syntax-Fehler'...
Dies ist die Abfrage, die ich bin mit
$sql = $pdo->prepare("SELECT stockamount, stockname, stockbalance.stockid, SUM(ABS(reservationtransaction.stockquantity)) AS reservedamount FROM stockbalance
JOIN stock ON stockbalance.stockid = stock.stockid
LEFT JOIN reservationtransaction ON reservationtransaction.articleid = :artid
WHERE stockbalance.articleid = :artid AND ((changeddate > DATEADD(yy,-1,GETDATE()) AND inventorydate > DATEADD(yy,-1,GETDATE())) OR stockbalance.stockamount <> 0)
GROUP BY stockbalance.stockid");
$sql->bindValue(':artid', $productId);
$sql->execute();
Den ich gesucht habe Fragen, aber niemand war ähnlich oder hilfreich.
Vielen Dank im Voraus.
Edit: Diese Abfrage ist in Ordnung, bei der Ausführung mit Microsoft SQL Server Management Studio, aber bei der Verwendung von PDO, ich bin immer der Fehler.
- Ihre
stockamount
undstockname
sind nicht Teil derGROUP BY
so Sie nicht Sie Sie ohne Aggregat-Methode wieMIN
. - Ich vermute, Sie haben MySQL-hintergrund :stackoverflow.com/questions/33629168/.... Der Punkt ist MySQL aggregation des Verhaltens ist nicht ANSI-Beschwerde.
- Pro die Fehlermeldung, dies ist eine PDOException, nicht eine SQL-Ausnahme. Könnte es sein, ein Missverhältnis in der Ergebnismenge, und das Objekt, das Sie versuchen, binden Sie es an?
- alles funktioniert ok, wenn ich die Ausführung dieses mit Microsoft SQL Server Management Studio, aber bei der Verwendung von PDO, ich bin immer diese Fehlermeldung. Ich habe auch versucht ohne
bindValue()
und schreiben von Werten in der Abfrage - gleiche Fehlermeldung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Platzhalter müssen eindeutige Namen haben, auch wenn Sie den gleichen Wert haben
Andere Möglichkeit, wenn Sie wollen, um zu vermeiden, Bereitstellung von Daten, die mehrere Male (ersetzen Sie den Datentyp @artid mit den richtigen Daten-Typ):
Funktioniert das nur in einem RDBMS unterstützt DECLARE-Anweisungen.
Alle Spalten, die nicht in eine beliebige arithmetische Funktion muss gehen in die
GROUP BY
- Klausel. siehe unten:SQLSTATE[07002]: [Microsoft][ODBC Driver 11 for SQL Server]COUNT field incorrect or syntax error
.Wenn die GRUPPE DURCH ist oft der Schuldige für eine ZÄHLUNG Problem, lief ich in das Thema Fehler in SSRS und es wurde durch ein Missverhältnis zwischen der SSRS-dataset-Abfrage und die Parameter. Die Auflösung wurde, um sicherzustellen, dass jeder, WO in der Abfrage hatte einen entsprechenden parameter für das dataset. (Hatte ich verpasst.)