Zellen auswählen wenn nicht gleich
Moderator: Moderatoren
Zellen auswählen wenn nicht gleich
Hallo,
Ich habe folgende Problemstellung:
Ich habe 2 Tabellen in einer Datenbank (Tabelle1, Tabelle2). Diese haben jeweils eine Spalte "Name". Die Namen der Tabelle2 sind auch in Tabelle 1 vorhanden, in Tabelle1 aber noch weitere. (Kurz:Tabelle2.Name ist eine Teilmenge von Tabelle1.Name). Ich will nun alle Namen aus Tabelle1 angezeigt bekommen, die aber nicht in Tabelle2 vorhanden sind. Die logische Fragestellung erscheint mir soweit richtig und klar, an der praktischen Ausführung bin ich aber bis jetzt gescheitert. Hat dazu jemand eine Idee?
Danke im voraus.
Ich habe folgende Problemstellung:
Ich habe 2 Tabellen in einer Datenbank (Tabelle1, Tabelle2). Diese haben jeweils eine Spalte "Name". Die Namen der Tabelle2 sind auch in Tabelle 1 vorhanden, in Tabelle1 aber noch weitere. (Kurz:Tabelle2.Name ist eine Teilmenge von Tabelle1.Name). Ich will nun alle Namen aus Tabelle1 angezeigt bekommen, die aber nicht in Tabelle2 vorhanden sind. Die logische Fragestellung erscheint mir soweit richtig und klar, an der praktischen Ausführung bin ich aber bis jetzt gescheitert. Hat dazu jemand eine Idee?
Danke im voraus.
Re: Zellen auswählen wenn nicht gleich
Hallo absti,
das kannst Du mit MINUS lösen:
Gruß Barlee
das kannst Du mit MINUS lösen:
Code: Alles auswählen
SELECT Name FROM Tabelle1
MINUS
SELECT Name FROM Tabelle2
Re: Zellen auswählen wenn nicht gleich
Hm, hab ich mir schon gedacht, dass es was ganz einfaches sein muss... . Muss man eben nur wissen. Jedenfalls vielen Dank.
Re: Zellen auswählen wenn nicht gleich
Habs ausprobiert, funktioniert bei mir leider nicht. Bekomme die Fehlermeldung "Table not found in statement". Die einzelnen select's funktionieren aber, nur wenn ich sie per "MINUS" verknüpfe funktioniert's nicht mehr. Woran kann das liegen? Arbeite mir OOO2.4, HSQLDB.
Re: Zellen auswählen wenn nicht gleich
Hallo,
also mir kommt es so vor als ob hier eine Abfrage mit Negation helfen kann. Ich würde das Problem so lösen:
Zu beachten: Da Negationen immer Performance hungrig sind kann so eine Abfrage bei größeren Tabellen (mehrere hunderttausende Sätze) auch länger dauern. Als Abhilfe kann man für die betroffene Tabellenfelder bzw. Tabellenspalten einen Index aufbauen/anlegen.
CREATE INDEX wird mit ALTER TABLE-, oder CREATE TABLE-Anweisung verknüpft.
also mir kommt es so vor als ob hier eine Abfrage mit Negation helfen kann. Ich würde das Problem so lösen:
Code: Alles auswählen
SELECT Tabelle1.Name FROM Tabelle1
WHERE Tabelle1.Name NOT IN (SELECT Tabelle2.Name FROM Tabelle2);
Code: Alles auswählen
CREATE [UNIQUE] INDEX <index> ON <table> (<column> [DESC] [, ...]) [DESC];
Habe keine Angst vom Unbekannten. Denke daran - Titanic haben Profis gebaut, die Arche ein Amateur!
Re: Zellen auswählen wenn nicht gleich
Ok. So gehts. Vielen Dank.
Re: Zellen auswählen wenn nicht gleich
Hallo absti,
Setze einfach die Tabellennamen und Spaltenbezeichner in Anführungsstriche. ('SQL Kommando direkt ausführen' muss aktiviert sein.)
Gruß Barlee
Falls es Dich noch interessiert, woran es liegt:Die einzelnen select's funktionieren aber, nur wenn ich sie per "MINUS" verknüpfe funktioniert's nicht mehr. Woran kann das liegen?
Setze einfach die Tabellennamen und Spaltenbezeichner in Anführungsstriche. ('SQL Kommando direkt ausführen' muss aktiviert sein.)
Gruß Barlee
Re: Zellen auswählen wenn nicht gleich
Hallo Barlee,
Danke für den Tip, interessiert mich schon noch. Funktioniert aber trotzdem bei mir nicht. Ich vermute, es liegt wohl daran, dass eine der Tabellen eine Abfrage ist (Test mit 2 "normalen" Tabellen hat funktioniert) . Wäre schön gewesen aber zum Glück hab' ich ja nun 'nen workaround.
absti.
Danke für den Tip, interessiert mich schon noch. Funktioniert aber trotzdem bei mir nicht. Ich vermute, es liegt wohl daran, dass eine der Tabellen eine Abfrage ist (Test mit 2 "normalen" Tabellen hat funktioniert) . Wäre schön gewesen aber zum Glück hab' ich ja nun 'nen workaround.
absti.
Re: Zellen auswählen wenn nicht gleich
Hallo absti,
Rechte Maustaste auf Abfrage >> als Ansicht erstellen
Diese findest Du anschließend unter Tabellen wieder und kannst sie in Abfragen wie "normale" Tabellen ansprechen.
Gruß Barlee
Da vermutest Du richtig. In solchem Fall musst Du aus Deiner Abfrage eine Ansicht (View) erstellen.Ich vermute, es liegt wohl daran, dass eine der Tabellen eine Abfrage ist
Rechte Maustaste auf Abfrage >> als Ansicht erstellen
Diese findest Du anschließend unter Tabellen wieder und kannst sie in Abfragen wie "normale" Tabellen ansprechen.
Gruß Barlee
Re: Zellen auswählen wenn nicht gleich
Hallo Barlee,
Danke für die Antwort. Und wieder was dazugelernt
.
absti.
Danke für die Antwort. Und wieder was dazugelernt

absti.