Inner-Join, Tabelle unvollständig
bearbeitet von Raketenwilli> 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:
~~~SQL
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
~~~SQL
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.
Inner-Join, Tabelle unvollständig
bearbeitet von Raketenwilli> 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:
~~~SQL
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
~~~SQL
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 Städten und Bundesländern.
Zur weiteren Eungrenzung kannst Du dann ETWAS wie
~~~
AND City="Erfurt"
~~~
oder
~~~
AND Country="Niedersachsen"
~~~
zur where-Clausel hinzufügen.
Mehrfachabfrage in einer mysql Tabelle, doppelte Ergebnisse
bearbeitet von Raketenwilli> 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:
~~~SQL
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
~~~SQL
SELECT a.name as City, b.name AS land
FROM
orte AS a,
orte AS b
WHERE
a.parent = b.id
~~~
liefert (die von mir) erwartete Tabelle mit Städten und Bundesländern.
Mehrfachabfrage in einer mysql Tabelle, doppelte Ergebnisse
bearbeitet von RaketenwilliJa. Viel.
Zuerst hat Deine Tabelle ein Problem. Es fehlt eine Beziehung zwischen den Orten und dem Land. Ich habe eine Spalte "parent" hinzugefügt. Dan auch noch Erfurt in Thüringen:
~~~SQL
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
~~~SQL
SELECT a.name as City, b.name AS land
FROM
orte AS a,
orte AS b
WHERE
a.parent = b.id
~~~
liefert dann (die von mir) erwartete Tabelle.