2017-04-12 2 views
1

Ich verwende den System i Navigator, um eine Ansicht zu erstellen. Meine Ansicht ist sehr einfach:Fehlermeldung: "Schlüsselwort ORDER nicht erwartet" beim Erstellen einer AS400-Ansicht

SELECT MOMAST.ORDNO, MOMAST.FITEM 
    FROM AMFLIBT.MOMAST AS MOMAST 
    WHERE MOMAST.FITEM LIKE 'POS-%' 
    GROUP BY MOMAST.ORDNO,MOMAST.FITEM 
    ORDER BY MOMAST.FITEM,MOMAST.ORDNO 

Wenn auf OK klicken um die Ansicht zu Creat, ich die folgende Fehlermeldung erhalten:

SQL0199] Keyword ORDER not expected. Valid tokens: . Cause . . . . . : The keyword ORDER was not expected here. A syntax error was detected at keyword ORDER. The partial list of valid tokens is .

Wenn ich die ORDER BY-Anweisung zu entfernen, die Ansicht zu sein, ist erfolgreich erstellt

Ich muss meine Sicht mit der Anweisung ORDER BY erstellen, wie kann ich diese Aufgabe ohne Fehler erreichen?

+0

'ORDER BY' in einer Ansicht ist nur gültig, wenn die obersten * n * Zeilen ausgewählt oder auf * n * Zeilen beschränkt werden. Ansonsten ist es falsch. Verwenden Sie 'ORDER BY', wenn Sie ** von ** der Ansicht auswählen. – JohnHC

+0

Ich habe eine vollständig erläuternde Antwort zu diesem –

+0

SQL-Tabellen und Sichten haben keine Reihenfolge hinzugefügt; Indizes haben. Sie könnten eine separate Frage zu Ihrer wahrgenommenen Notwendigkeit von ORDER BY stellen, sodass eine Alternative vorgeschlagen werden könnte. – user2338816

Antwort

4

Eine Ansicht ist eine relationale Tabelle, und das relationale Modell definiert eine Tabelle als eine Reihe von Zeilen. Da die Mengen nicht geordnet sind, sind die Zeilen in einer Ansicht per Definition auch nicht geordnet. Daher ist eine ORDER BY Klausel in der Ansichtsdefinition bedeutungslos. Der SQL-Standard (SQL: 2003) erlaubt keine ORDER BY-Klausel in einem Subselect in einer CREATE VIEW-Anweisung, genauso wie es in einer CREATE TABLE-Anweisung nicht zulässig ist.

In Ihrem Fall empfehle ich, die Ansicht ohne die ORDER BY-Anweisung zu erstellen und diese Anweisung bei der Auswahl aus der Ansicht zu verwenden (nicht während der Erstellung).

+0

Ich empfehle auch, die Ansicht ohne die Klausel "Order By" zu erstellen – danny117

Verwandte Themen