Hallo zusammen,
ich zerbreche mir gerade den Kopf, wie ich etwas für MySql UND Oracle umsetzen kann. Und zwar habe ich folgende Tabellen
TEMPLATE
- ID
- TYPE_ID
- NAME
- ...
TEMPLATE_TYPE
- ID
- UNIQUE_IDENTIFIER
- NAME
- ...
GROUPS
- ID
- GROUP_ID
- ...
Die Beziehungen sind Template <-> Template_Type 1:1, Template <-> Groups 1:n
Ich möchte nun alle Templates vom Typ 'A' (der Wert steht im UNIQUE_IDENTIFIER - ich kann nicht über die ID gehen, sondern muss zwangsweise über den IDENTIFIER gehen) die genau zwei Gruppen (13 und 14) als GROUP_ID haben.
Wenn ein Template vom Typ 'A' z.B. die Gruppen 13, 14 und 16 hat darf das nicht gefunden werden, genauso wenig wie wenn es die Gruppe 13 hat oder die Gruppen 15, 18.
Ungültig wäre auch 13, 13, 14.
Das Query, das ich bisher hinbekommen habe prüft lediglich, ob die Gruppen 13 und 14 dem Template zugeordnet sind, nicht aber, dass es daneben keine anderen geben darf und die Gruppen 13 und 14 nur einmal zugeordnet sein dürfen.
Hier mal das Query, das ich bisher habe:
Könntet ihr mir bitte dabei weiterhelfen? Je einfacher, umso besser, da ich das ganze noch in die Sprache eines OR-Mappers umwandeln muss.
Vielen Dank und viele Grüße,
Dirk
ich zerbreche mir gerade den Kopf, wie ich etwas für MySql UND Oracle umsetzen kann. Und zwar habe ich folgende Tabellen
TEMPLATE
- ID
- TYPE_ID
- NAME
- ...
TEMPLATE_TYPE
- ID
- UNIQUE_IDENTIFIER
- NAME
- ...
GROUPS
- ID
- GROUP_ID
- ...
Die Beziehungen sind Template <-> Template_Type 1:1, Template <-> Groups 1:n
Ich möchte nun alle Templates vom Typ 'A' (der Wert steht im UNIQUE_IDENTIFIER - ich kann nicht über die ID gehen, sondern muss zwangsweise über den IDENTIFIER gehen) die genau zwei Gruppen (13 und 14) als GROUP_ID haben.
Wenn ein Template vom Typ 'A' z.B. die Gruppen 13, 14 und 16 hat darf das nicht gefunden werden, genauso wenig wie wenn es die Gruppe 13 hat oder die Gruppen 15, 18.
Ungültig wäre auch 13, 13, 14.
Das Query, das ich bisher hinbekommen habe prüft lediglich, ob die Gruppen 13 und 14 dem Template zugeordnet sind, nicht aber, dass es daneben keine anderen geben darf und die Gruppen 13 und 14 nur einmal zugeordnet sein dürfen.
Hier mal das Query, das ich bisher habe:
Code:
SELECT
TEMPLATE.ID,
TEMPLATE.NAME
FROM TEMPLATE
LEFT JOIN TEMPLATE_TYPE
ON (TEMPLATE.TYPE_ID=TEMPLATE_TYPE.ID)
LEFT JOIN GROUPS a
ON (TEMPLATE.ID =a.TEMPLATE_ID)
LEFT JOIN GROUPS b
ON (TEMPLATE.ID =b.TEMPLATE_ID)
WHERE TEMPLATE_TYPE.UNIQUE_IDENTIFIER = 'A'
AND (a.GROUP_ID =13
AND b.GROUP_ID =14)
Könntet ihr mir bitte dabei weiterhelfen? Je einfacher, umso besser, da ich das ganze noch in die Sprache eines OR-Mappers umwandeln muss.
Vielen Dank und viele Grüße,
Dirk