Brett vorm Kopf n:m Relation
Brett vorm Kopf n:m Relation
am 20.01.2007 22:26:21 von Rainer Hinz
Moin
eigentlich ein triviales Problem, aber ich kriege keinen einzelnen SQL=20
Befehl hin (MySQL 4.0)
1. Tabelle Nutzer
2. Tabelle Gruppe
Jeder NUtzer kann Mitglied unterschiedlicher Gruppen sein. Also n:m=20
Relation. Nun möchte ich mit einem Statement ermitteln, welcher Nutzer =
nicht Mitglied einer bestimmten Gruppe ist.
Sorry, habe einfach gerade ein Brett vorm Kopf.
Wer hilft mir aus meiner misslichen Lage?
Danke und Gruß
Anne
Re: Brett vorm Kopf n:m Relation
am 20.01.2007 22:45:11 von Dominik Greiwe
"Anne Kaeppes" schrieb im Newsbeitrag
news:eou0hb$b5b$03$1@news.t-online.com...
Moin
<
<1. Tabelle Nutzer
<2. Tabelle Gruppe
<
Wie sehen die Tabellen genau aus?
Ich würde vielleicht eine Zuordnungstabelle erstellen so dass du in die
dritte Normalenform kommst. Wie bildest du ab wenn ein Nutzer in mehreren
Gruppen ist, wie sieht das ensprechende Feld aus?
Re: Brett vorm Kopf n:m Relation
am 20.01.2007 22:49:46 von Andreas Kretschmer
Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)
Re: Brett vorm Kopf n:m Relation
am 21.01.2007 00:03:22 von Rainer Hinz
Andreas Kretschmer wrote:
> begin Anne Kaeppes wrote:
> Ich vermute mal, du hast das nicht zu Ende normalisiert. Ich würde da=
s
> in 3 Tabellen lösen:
Doch, eigentlich schon. Ich habe nunmal n:m und zwei Tabellen, macht=20
dann insgesamt 3. Die n:m TAbelle betrachtete ich hier nicht.
> test=3D*# select * from nutzer where id not in (select nutzer_id from
> mitgliedschaft where gruppe_id =3D 1);
Genauso würde es funktionieren, meine MySQL Version unterstützt aber =
keine Subselects. Zur Zeit realisiere ich alles mit zwei Anweisungen=20
und PHP drum herum.
Danke erstmal...
Gruß
Anne
Re: Brett vorm Kopf n:m Relation
am 21.01.2007 05:39:12 von Thomas Rachel
Anne Kaeppes wrote:
>> test=*# select * from nutzer where id not in (select nutzer_id from
>> mitgliedschaft where gruppe_id = 1);
>
>Genauso würde es funktionieren, meine MySQL Version unterstützt aber
>keine Subselects. Zur Zeit realisiere ich alles mit zwei Anweisungen
>und PHP drum herum.
SELECT ... FROM nutzer LEFT JOIN mitgliedschaft ON nutzer.id=nutzer_id
AND gruppe_id=1 WHERE gruppe_id IS NULL
sollte es dann tun. (ungetestet)
Thomas
--
Sehr witzig Scotty - Und jetzt beam meine Kleidung runter! (unbekannte
Quelle)
Re: Brett vorm Kopf n:m Relation
am 21.01.2007 12:42:00 von Claus Reibenstein
Anne Kaeppes schrieb:
> eigentlich ein triviales Problem, aber ich kriege keinen einzelnen SQL
> Befehl hin (MySQL 4.0)
>
> 1. Tabelle Nutzer
> 2. Tabelle Gruppe
>
> Jeder NUtzer kann Mitglied unterschiedlicher Gruppen sein. Also n:m
> Relation. Nun möchte ich mit einem Statement ermitteln, welcher Nutzer
> nicht Mitglied einer bestimmten Gruppe ist.
Ich nehme mal an, die Tabellen "Nutzer" und "Gruppe" haben jeweils eine
eindeutige "id". Aufgrund der n:m-Verknüpfung nehme ich ferner an, dass
es eine Tabelle "Verknuepfung" mit entsprechenden Verweisen "Nid" und
"Gid" gibt.
Dann sollte das in etwa so funktionieren:
SELECT n.id FROM Nutzer n
LEFT JOIN Verknuepfung v ON v.Nid = n.id
WHERE v.Gid = 'gesuchteGruppe' AND n.id IS NULL
GruÃ. Claus
--
,~°O O
O ,´ / |/|\
/ |¯`. Das neue Hochzeits-Branchenbuch im Internet ,´ / | |\
/__| `~...............................................~´ /___|/ /
Re: Brett vorm Kopf n:m Relation
am 21.01.2007 12:52:52 von Andreas Kretschmer
Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)
Re: Brett vorm Kopf n:m Relation
am 21.01.2007 12:53:17 von Claus Reibenstein
Claus Reibenstein schrieb:
> SELECT n.id FROM Nutzer n
> LEFT JOIN Verknuepfung v ON v.Nid = n.id
> WHERE v.Gid = 'gesuchteGruppe' AND n.id IS NULL
^^^^
Soll natürlich v.Nid heiÃen.
GruÃ. Claus
--
,~°O O
O ,´ / |/|\
/ |¯`. Das neue Hochzeits-Branchenbuch im Internet ,´ / | |\
/__| `~...............................................~´ /___|/ /