Hallo,
Tabelle1
Name Straße IDTabelle2
PLZ Nationalität IDMein Problem ist, ich möchte gerade alle Werte aus Tabelle2 angezeigt bekomme die eine ID haben, die nicht mit der aus der Tabelle1 übereinstimmen.
wenn ich Dich richtig verstehe, möchtest Du alle Datensätze aus Tabelle2 haben, deren ID in Tabelle1 nicht auftritt.
Ich hab des so gemacht, aber ich bekomme keine Wert zurück.
was nicht verwunderlich ist.
» SELECT PLZ Nationalität, tabelle2.ID
FROM
Tabelle2
INNER JOIN Tabelle1 ON Tabelle2.id = Tabelle1.ID-- aus der Kombination jedes Datensatzes aus Tabelle1 mit jedem Datensatz aus
-- Tabelle2 möchtest Du nur die Datensätze haben, bei denen die Werte in der
-- Spalte ID übereinstimmen.-- Das Ergebnis dieser Operation schränkst Du durch die Bedingung ein,
WHERE Tabelle1.ID != Tabelle2.id;
-- dass die Werte in der Spalte ID unterschiedlich sein müssen.
> > Was ist daran falsch
>
> Wie können die Werte in der Spalte ID gleichzeitig gleich und gleichzeitig unterschiedlich sein?
>
> Nochmals zu Deinem Ausgangsproblem:
>
> Gib mir die Werte der Spalten
> PLZ,
> Nationalität
> und ID
> aus
> Tabelle2
> wobei mich nur die Datensätze interessieren
> deren ID
> nicht in der Liste der IDs aus Tabelle1 vorkommt.
>
> übersetzen wir eins zu eins in SQL:
>
> ~~~sql
-- Gib mir die Werte der Spalten
> SELECT
> PLZ,
> Nationalität,
> ID
> -- aus
> FROM
> Tabelle2
> -- wobei mich nur die Datensätze interessieren
> WHERE
> -- deren ID nicht in
> Tabelle2.ID NOT IN (
> -- der Liste der IDs aus Tabelle1 vorkommt.
> SELECT Tabelle1.ID FROM Tabelle1
> )
>
oder nicht ganz so intuitiv mit einem OUTER JOIN und dem IS-NULL-Operator
SELECT
t2.PLZ,
t2.Nationalität,
t2.ID
FROM
Tabelle2 t2
LEFT JOIN
Tabelle1 t1
ON
t2.ID = t1.ID
WHERE
t1.ID IS NULL
>
> Die zweite Version funktioniert auch mit uralten MySQL-Versionen (sprich 4.0 und älter), die ich nicht mehr im produktiven Einsatz sehen möchte, da sie bereits seit Jahren tot sind, d.h. dass es keinerlei Sicherheitsupdates für bekannte kritische Fehler mehr gibt.
>
> Mehr zu Joins findest Du in unseren Datenbankartikeln zu den Joins:
>
> - [Einführung in Joins](http://aktuell.de.selfhtml.org/artikel/datenbanken/joins/)
> - [Fortgeschrittene Jointechniken](http://aktuell.de.selfhtml.org/artikel/datenbanken/fortgeschrittene-joins/)
>
>
> Freundliche Grüße
>
> Vinzenz
Vielen DAnk hab des jetzt mit LEFT JOIN gemacht. Ja ich weiß des hört sich da alles verwirrend an, aber ich kann in der Datenbank nur Tabellenhinzufügen. Also ich kann keine bestehenden Tabellen verändern