Zellen auswählen wenn nicht gleich

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

absti
***
Beiträge: 91
Registriert: Fr, 22.04.2005 16:53

Zellen auswählen wenn nicht gleich

Beitrag von absti »

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.
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Zellen auswählen wenn nicht gleich

Beitrag von Barlee »

Hallo absti,

das kannst Du mit MINUS lösen:

Code: Alles auswählen

SELECT Name FROM Tabelle1
MINUS
SELECT Name FROM Tabelle2
Gruß Barlee
absti
***
Beiträge: 91
Registriert: Fr, 22.04.2005 16:53

Re: Zellen auswählen wenn nicht gleich

Beitrag von absti »

Hm, hab ich mir schon gedacht, dass es was ganz einfaches sein muss... . Muss man eben nur wissen. Jedenfalls vielen Dank.
absti
***
Beiträge: 91
Registriert: Fr, 22.04.2005 16:53

Re: Zellen auswählen wenn nicht gleich

Beitrag von absti »

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.
Mr.Bobo
**
Beiträge: 27
Registriert: Di, 18.12.2007 18:41
Wohnort: Bad camberg
Kontaktdaten:

Re: Zellen auswählen wenn nicht gleich

Beitrag von Mr.Bobo »

Hallo,
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);
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.

Code: Alles auswählen

CREATE [UNIQUE] INDEX <index> ON <table> (<column> [DESC] [, ...]) [DESC];
CREATE INDEX wird mit ALTER TABLE-, oder CREATE TABLE-Anweisung verknüpft.
Habe keine Angst vom Unbekannten. Denke daran - Titanic haben Profis gebaut, die Arche ein Amateur!
absti
***
Beiträge: 91
Registriert: Fr, 22.04.2005 16:53

Re: Zellen auswählen wenn nicht gleich

Beitrag von absti »

Ok. So gehts. Vielen Dank.
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Zellen auswählen wenn nicht gleich

Beitrag von Barlee »

Hallo absti,
Die einzelnen select's funktionieren aber, nur wenn ich sie per "MINUS" verknüpfe funktioniert's nicht mehr. Woran kann das liegen?
Falls es Dich noch interessiert, woran es liegt:
Setze einfach die Tabellennamen und Spaltenbezeichner in Anführungsstriche. ('SQL Kommando direkt ausführen' muss aktiviert sein.)

Gruß Barlee
absti
***
Beiträge: 91
Registriert: Fr, 22.04.2005 16:53

Re: Zellen auswählen wenn nicht gleich

Beitrag von absti »

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.
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Zellen auswählen wenn nicht gleich

Beitrag von Barlee »

Hallo absti,
Ich vermute, es liegt wohl daran, dass eine der Tabellen eine Abfrage ist
Da vermutest Du richtig. In solchem Fall musst Du aus Deiner Abfrage eine Ansicht (View) erstellen.
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
absti
***
Beiträge: 91
Registriert: Fr, 22.04.2005 16:53

Re: Zellen auswählen wenn nicht gleich

Beitrag von absti »

Hallo Barlee,

Danke für die Antwort. Und wieder was dazugelernt :).

absti.
Antworten