Mengendifferenz

Mengendifferenz

am 15.03.2006 06:27:28 von lara.roepnack

Ich habe zwei Relationen, wovon die eine semantisch eine Teilmenge der
andern ist. Nun möchte ich alle Datensätze der größeren Relation
haben, die nicht in der kleineren enthalten sind. left und right Join
liefern mir ja immer alles was in der Relation ist und ein Inner Join
die Schnittmenge. Nun habe ich es mit ausdrücken wie Where
kleinereRelation.Pri IS NULL probiert was aber auch nicht funktioniert
hat.
Kann mir jemand eine Abfrage nennen, womit ich das gewünschte Ergebnis
erhalte?
die große Relation kürze ich mit gR und die kleine entsprechend mit
kR ab.
Letzter Stand meiner Bemühungen:

SELECT count(gR.Att_y)
FROM gR
LEFT JOIN kR ON (gR.gleich =3D kR.gleich )
WHERE kR.Att_x IS NULL;

...liefert leider die Gesamtzahl aller in der großen Relation
enthaltenen Datensätze

Vielen lieben Dank im Voraus

Lara Röpnack

Re: Mengendifferenz

am 15.03.2006 06:55:34 von sylvio runge

lara.roepnack@gmail.com wrote:

> LEFT JOIN kR ON (gR.gleich = kR.gleich )
und per Outer Join ?



S.

Re: Mengendifferenz

am 15.03.2006 07:58:19 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de

Re: Mengendifferenz

am 15.03.2006 09:16:44 von Guy Walter

Andreas Kretschmer wrote:
>
> SQL kennt dafür EXCEPT, ich weiß nicht, ob MySQL das schon kennt.
> Probier mal:
>

Ich glaube das gibt es bei mysql nicht.

Versuche mal dieses hier:

SELECT t1.id
FROM table1 t1
WHERE t1.keyword = 'keyword'
AND NOT EXISTS
(
SELECT t2.id
FROM table t2
WHERE t2.keyword = t1.keyword
)

Gruss Guy

Re: Mengendifferenz

am 20.03.2006 22:54:22 von Dominik Echterbruch

lara.roepnack@gmail.com wrote:
> Ich habe zwei Relationen, wovon die eine semantisch eine Teilmenge der
> andern ist. Nun möchte ich alle Datensätze der größeren Relation
> haben, die nicht in der kleineren enthalten sind.

Auch wenn du scheinbar diese Idee schon selber hattest, suchst du
vermutlich sowas hier:

SELECT gr.*
FROM gr
LEFT JOIN kr ON kr.gleich = gr.gleich
WHERE kr.gleich IS NULL

Grüße,
Dominik