Weis jemand was da falsch läuft?
Ja. Viel.
Zuerst hat Deine Tabelle ein Problem. Es fehlt eine Beziehung zwischen den Orten und dem Land. Ich habe eine Spalte "parent" hinzugefügt, dann auch noch Erfurt in Thüringen damit der Effekt sichtbar wird:
BEGIN TRANSACTION;
CREATE TABLE IF NOT EXISTS "orte" (
"id" INTEGER,
"parent" INTEGER,
"ebene" INTEGER,
"name" TEXT,
PRIMARY KEY("id")
);
INSERT INTO "orte" VALUES (1,NULL,1,'Niedersachsen');
INSERT INTO "orte" VALUES (2,1,2,'Hannover');
INSERT INTO "orte" VALUES (3,1,2,'Hildesheim');
INSERT INTO "orte" VALUES (4,1,2,'Göttingen');
INSERT INTO "orte" VALUES (5,NULL,1,'Thüringen');
INSERT INTO "orte" VALUES (6,5,2,'Erfurt');
COMMIT;
Die Abfrage geht dann via inner Join
SELECT a.name as City, b.name AS Country
FROM
orte AS a,
orte AS b
WHERE
a.parent = b.id
liefert (die von mir) erwartete Tabelle mit allen Städten und den dazu gehörenden Bundesländern.
Zur weiteren Eingrenzung kannst Du dann ETWAS wie
AND City="Erfurt"
oder
AND Country="Niedersachsen"
zur where-Clausel hinzufügen.