2016-04-13 14 views
0

Bitte helfen, ich möchte meine SortIDs mit neuen aufsteigenden Zahlen aktualisieren, kann aber nicht herausfinden, wie, weil FileMaker SQL ist ziemlich begrenzt.Sortierungsnummern können nicht mit SQL-92 (Filemaker) aktualisiert werden

Ich kann FileMaker nicht dazu verwenden, weil ich das aktuelle FoundSet nicht verlieren möchte.

Es gibt eine FileMaker-Funktion RecordNumber, die ich hier verwende. Es gibt immer aufsteigende Zahlen zurück, egal wie das Ergebnis sortiert ist.

Hier ist meine Tabelle mit Record:

SELECT SortID, RecordNumber FROM Beleg 
WHERE Year (Valuta) = 2016 
AND Ursprungskonto = 1210 
ORDER BY SortID 

Produziert:

.5 1 
2 2 
3 3 
4 4 
5 5 
6 6 
7 7 
8 8 
9 9 
10 10 
10.000001 11 
10.000002 12 

sieht gut aus. Aber ich kann das ORDER BY nicht verlassen, wenn ich UPDATE benutze, erhalte ich einen Fehler.

Wenn ich jedoch ORDER BY herausnehme, werden meine SortIDs falsch aktualisiert. Dies ist, was die Liste aussieht, wenn ich die ORDER BY auslassen:

SELECT SortID, RecordNumber FROM Beleg 
WHERE Year (Valuta) = 2016 
AND Ursprungskonto = 1210 

produziert diese:

2 1 
3 2 
.5 3 
4 4 
5 5 
6 6 
7 7 
8 8 
9 9 
10 10 
10.000001 11 
10.000002 12 

die Anweisung:

UPDATE Beleg SET SortID = RecordNumber 
WHERE Year (Valuta) = 2016 
AND Ursprungskonto = 1210 

ich die falschen Werte in SortID . 0.5 sollte mit 1 und nicht mit 3 aktualisiert werden.

Ich bin verloren. Irgendwelche Ideen, wie man aufsteigende Zahlen in meine Sortier-Spalte schreibt?

Vielen Dank!

Gary

+1

Macht keinen Sinn – sagi

+0

Es gibt keine interne Reihenfolge in den meisten SQL RDBMS. So können Sie aktualisieren, ohne sich darüber Gedanken zu machen. –

+0

Wenn ich update, wird es mit den falschen Zahlen aktualisiert. Da das Ergebnis in der Reihenfolge ist, in der die Datensätze erstellt werden, nicht gemäß den in SortID gespeicherten Werten. –

Antwort

0

Dank Ziggy Crueltyfree Zeitgeister auf Stackexchange bekam ich die Antwort!

Er schlug vor, diese in mehrere Schritte zu brechen, eine temporäre Tabelle mit den Ergebnissen zu speichern:

CREATE TABLE sorting (sid numeric(10,10), rn int); 

INSERT INTO sorting (sid, rn) 
SELECT SortID, RecordNumber FROM Beleg 
WHERE Year (Valuta) = 2016 
AND Ursprungskonto = 1210 
ORDER BY SortID; 

UPDATE Beleg SET SortID = (SELECT rn FROM sorting WHERE sid=Beleg.SortID) 
WHERE Year (Valuta) = 2016 
AND Ursprungskonto = 1210; 

DROP TABLE sorting; 

Natürlich! Ich habe gerade die Tabellendefinition in Filemaker gemacht und sie behalten (lassen Sie den Typzwang durch Filemaker auf diese Weise machen), und fülle und lösche davon mit meiner Funktion: RenumberSortID().

Verwandte Themen