Hi
ich stehe vor folgendem Problem, meine Datenbank sieht ca. so aus
drei Spalten inklusive der ROWID jetzt möchte ich nur die Zeile ausgeben
in der die RROWID die hoechset Zahl und die Elemente in S2 und die Elemente in S1 gleich sind.
S1 S2
1 a "A"
2 a "A"
3 b "A"
4 b "A"
5 a "B"
.
.
.
in diesem Fall wäre die Ausgabe 2 a "A"
Wenn ich mich nur auf eine Spalte beschränke bekomme ich das hin aber nicht bei zwei Spalten.
McAce
SQlite3 mehrere Elemente Grupieren ?
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Wie sieht denn deine bisherige Query aus? 
(Für tabellarische Daten verwende doch allgemeine Code-Tags; dann verrutscht auch nix)
Ich sehe da übrigens keine Gleichheit; wobei ich mich zusätzlich wundere, dass in der S1-Spalte Zeichen ohne Anführungsstriche in der Tabelle stehen - oder ist das nur Bequemlichkeit von Dir?

(Für tabellarische Daten verwende doch allgemeine Code-Tags; dann verrutscht auch nix)
Ich sehe da übrigens keine Gleichheit; wobei ich mich zusätzlich wundere, dass in der S1-Spalte Zeichen ohne Anführungsstriche in der Tabelle stehen - oder ist das nur Bequemlichkeit von Dir?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Hi,
ich weiß nicht, ob es noch aktuell ist, aber hier mal die Lösung:
SELECT max(rowid) AS MaxRowID
FROM [hier_deinen_tabellennamen_einfügen]
WHERE S1 = S2
Allerdings sind in deiner Beispieltabelle S1 und S2 nirgends gleich, weil a <> A, wenn ich mal davon ausgehe das auch "a" ein String sein soll. Wenn Groß- oder Kleinschreibung ignoriert werden soll, einfach WHERE UCASE(S1) = UCASE(S2) einfügen.
Grüße
ich weiß nicht, ob es noch aktuell ist, aber hier mal die Lösung:
SELECT max(rowid) AS MaxRowID
FROM [hier_deinen_tabellennamen_einfügen]
WHERE S1 = S2
Allerdings sind in deiner Beispieltabelle S1 und S2 nirgends gleich, weil a <> A, wenn ich mal davon ausgehe das auch "a" ein String sein soll. Wenn Groß- oder Kleinschreibung ignoriert werden soll, einfach WHERE UCASE(S1) = UCASE(S2) einfügen.
Grüße
Der alte Teich / Ein Frosch springt hinein / Vom Wasser ein Geräusch (Matsuo Basho)
Du hast die Fragestellung nicht genau verstanden. Es ging darum, dass in unterschiedlichen Zeilen jeweils S1 und jeweils S2 identisch sind. Anders ausgedrückt soll der komplette dargestellte Datensatz bis auf die ROWID gleich sein.Zarolgil hat geschrieben:Allerdings sind in deiner Beispieltabelle S1 und S2 nirgends gleich, weil a <> A, wenn ich mal davon ausgehe das auch "a" ein String sein soll. Wenn Groß- oder Kleinschreibung ignoriert werden soll, einfach WHERE UCASE(S1) = UCASE(S2) einfügen.
Für mich sieht das ganze eher nach einem Subselect mit GROUP BY aus und wenn nur mehrfach vorhandene Zeilen berücksichtigt werden sollen, dann müsste man auch noch ein HAVING COUNT ergänzen.
Gruß,
Matthias
Müsste dann das Ergebnis der Beispieltabelle nicht eigentlich 4 b "A" sein. Oder stehe ich jetzt komplett auf dem Schlauch?/me hat geschrieben:Du hast die Fragestellung nicht genau verstanden. Es ging darum, dass in unterschiedlichen Zeilen jeweils S1 und jeweils S2 identisch sind. Anders ausgedrückt soll der komplette dargestellte Datensatz bis auf die ROWID gleich sein.
Für mich sieht das ganze eher nach einem Subselect mit GROUP BY aus und wenn nur mehrfach vorhandene Zeilen berücksichtigt werden sollen, dann müsste man auch noch ein HAVING COUNT ergänzen.
Gruß,
Matthias
Der alte Teich / Ein Frosch springt hinein / Vom Wasser ein Geräusch (Matsuo Basho)
Die Beschreibung in der Frage ist mir persönlich da nicht eindeutig genug. Nehmen wir an, die Datenmenge sei wie folgt.Zarolgil hat geschrieben:Müsste dann das Ergebnis der Beispieltabelle nicht eigentlich 4 b "A" sein. Oder stehe ich jetzt komplett auf dem Schlauch?
Code: Alles auswählen
ROWID S1 S2
1 a "A"
2 a "A"
3 b "A"
4 b "A"
5 a "B"
Code: Alles auswählen
2 a "A"
4 b "A"
In dem Fall habe ich allerdings den Verdacht, dass man da ein Problem zu lösen versucht, das man mit einem ungünstigen Datenmodell selber erzeugt hat.
so ein mist irgendwie ahbe ich die Benachrichtigungsemail nicht erhalten.
Es ging nicht darum S1 mit S2 zu vergleichen es ging darum die Zeile zu finden in der z.B
alle gleichen Elemente von S1 und alle gleichen Elemente von S2 enthalten und die rowid die höchste
Zahl hat.
habe das Problem aber mittlerweile gelöst, es klappte nicht weil an anderer Stelle etwas fehl lief
Der Code sieht so aus
Grüße McAce
Es ging nicht darum S1 mit S2 zu vergleichen es ging darum die Zeile zu finden in der z.B
alle gleichen Elemente von S1 und alle gleichen Elemente von S2 enthalten und die rowid die höchste
Zahl hat.
habe das Problem aber mittlerweile gelöst, es klappte nicht weil an anderer Stelle etwas fehl lief

Der Code sieht so aus
Code: Alles auswählen
auswahl = "SELECT FROM datenbank WHERE (S1 || ROWID || S2) IN (SELECT S1 || MAX(ROWID)|| S2 FROM datenbank GROUP BY S1 || S2)"