SQL hilfestellung

Danke,

das obrige Beispiel von Ihnen war ja schon (fast) die Lösung....
geändert wurde nur:
...
WHERE content like '000_____005'
AND content LIKE '000_____006' ------>ab diesem AND kommt's hier zum Syntax Fehler
zu:
WHERE content like '000________'

und

WHERE t.zeile BETWEEN t.zeile / 9000 * 9000 AND t.zeile / 9000 * 9000 + 1
zu
WHERE t.zeile BETWEEN t.zeile AND t.zeile / 9000 * 9000 + 1


Nur:
UPDATE labels
SET count = 99
WHERE cast(cast(content AS VARCHAR(11)) AS INT) BETWEEN cast(cast(content AS VARCHAR(11)) AS INT) / 9000 * 9000 AND cast(cast(content AS VARCHAR(11)) AS INT) / 9000 * 9000 + 1

gibt leider eine falsche Änderung:
Zwischenablage_08-29-2025_01.webp
im Test wird hier leider Datensatz 1000, 1001,2000,2001..... geändert
 
Werbung:
mag sein, aber ich benötige eine Änderung von count in folgernder reihenfolge:
korrekt.webp
Mein Datensatz beginnt mit 00050474006 und endet mit (+630000) 00051104005
die Abfrage (thread #14) ist ja jetzt korrekt.
nur muss ich ja das Feld count in GENAU der Reihenfolge (siehe Bild)
geändert haben und nicht nur angezeigt.

MfG
Frank
 
...weil dieses Programm zur Auswertung
Sehr häufig mit div prefix Daten vor den fortlaufenden Zahlen auch umgehen können muss.
Abc123
Abc124
...
 
mag sein, aber ich benötige eine Änderung von count in folgernder reihenfolge:
Anhang anzeigen 2617
Mein Datensatz beginnt mit 00050474006 und endet mit (+630000) 00051104005
die Abfrage (thread #14) ist ja jetzt korrekt.
nur muss ich ja das Feld count in GENAU der Reihenfolge (siehe Bild)
geändert haben und nicht nur angezeigt.

MfG
Frank
Okay ich habe noch einen Offset von 2005 eingebaut, damit die Formel an der richtigen Stelle greift.

Testen mit:
Code:
SELECT    *
FROM    labels
WHERE    cast(cast(content AS VARCHAR(11)) AS INT)-2005 BETWEEN cast(cast(content AS VARCHAR(11)) AS INT)-2005 AND (cast(cast(content AS VARCHAR(11)) AS INT)-2005) / 9000 * 9000 + 1

Update:
Code:
UPDATE    labels
SET        count = 99
WHERE    cast(cast(content AS VARCHAR(11)) AS INT)-2005 BETWEEN cast(cast(content AS VARCHAR(11)) AS INT)-2005 AND (cast(cast(content AS VARCHAR(11)) AS INT)-2005) / 9000 * 9000 + 1
 
Ich kenne DB-Browser für SQLite nicht aber die vorhandene Version scheint die latest stable zu sein. Daher war ich auch so irritiert, das ROW_NUMBER() schon vor 6 Jahren! eingebaut wurde.
Ich glaube, das liegt einfach nur daran, welche sqlite libs im Browser (oder vielen anderen tools) verwendet werden. Die meisten System mit "embedded" sqlite haben keine besonderen Anforderungen an SQL und das wird entsprechend stiefmütterlich behandelt. Solange der eigene Bedarf gedeckt ist, wird da leider nur wenig drauf geachtet.
Im Zweifel kann man die libs selbst austauschen und hat die neue Funktion an Bord.
 
Hier ist wohl noch ein Missverständnis offen...
das ROW_NUMBER() ging letztendlich doch!
in meinem Test mit:
SELECT *,
ROW_NUMBER() OVER (ORDER BY content) AS zeile
FROM tabelle
WHERE content like '000_____005'
AND content LIKE '000_____006'

konnte das SQL kommando wegen dem AND ...LIKE... nicht ausgeführt werden
hier durfte nach dem Where keine weitere Bedingung ausgeführt werden
es kam zum Syntax Error... welcher von mir fälschlicherweise dem ROW_Number
zugeordnet wurde.

Gruß Frank
 
Werbung:
Hier ist wohl noch ein Missverständnis offen...
das ROW_NUMBER() ging letztendlich doch!
Ja das hatte ich in #12 auch so verstanden und das wäre in einem solchen Szenario auch eine sinnvolle Methode um zum Ziel zu gelangen. Bei dir ist die Besonderheit aber, das du bereits eine lückenlose, eindeutige Nummerierung in Form der content-Spalte hast, wenn auch nicht ganz ideal durch Formatierung und Offset. Aber die Lösung kann dadurch auch ohne Window-Function wie ROW_NUMBER() auskommen, ohne das wirklich Nachteile entstehen (vielleicht ist das sogar schneller, kann ich ohne Tests nicht sagen). Daher habe ich darauf verzichtet.
 
Zurück
Oben