# [SQL] Abfrage --> alle Gruppen, ohne MailConfig



## clemson (25. Aug 2005)

Hallo!

Folgendes: Ich habe 2 Tabellen: die Tabelle _odm_group_ welche die einzelnen Gruppen speichert (mit dem primärschlüssel id, und anderen (für dieses beispiel uninteressante) spalten wie label, url, ...) und eine tabelle _odm_mailconfig_, welche die einzelnen mail configs speichert (mit dem primärschlüssel id, group_id, host, username und password).

wenn eine neue mailconfig erstellt wird, so wird ein fremdschlüssel angelegt (group_id), welcher auf die id der odm_group verweist.

im formular, in welchem die mailconfigs festgelegt werden, soll eine select-box angezeigt werden, welche alle gruppen auflisten, welche noch keine zugewiesene mailconfig besitzen.

ich brauche also eine sql abfrage, welche alle gruppen zurückgibt, für die es noch keine zeile in der odm_mailconfig gibt, welche den verweis auf eine group_id besitzt...  ???:L  ich hoffe iht wisst was ich meine...


ich glaube, so in etwa muss sie lauten, die abfrage


```
SELECT g.* FROM odm_group g, odm_mailconfig mc WHERE g.id <> mc_group_id
```


----------



## AlArenal (25. Aug 2005)

Was hat das mit Java zu tun?



> Allgemeines
> Allgemeine Fragen zu Java kommen hier rein.


----------



## clemson (25. Aug 2005)

hmm, ich mach das ganze in java 

nein, hab da wohl die falsche forum-kategorie ausgeuscht... könnte diesen thread bitte jemand verschieben?? danke und entschuldigung...


----------



## AlArenal (25. Aug 2005)

SQL ist kein einheitlicher Standard. So ne Info über das verwendete RDMS wäre net übel...

http://dev.mysql.com/doc/mysql/en/any-in-some-subqueries.html
http://www.codeguru.com/forum/showthread.php?t=351654


----------



## clemson (25. Aug 2005)

ich verwende oracle (9.1.2)...


----------



## AlArenal (25. Aug 2005)

Da dürfte es aber ähnlich sein, denn die 9i hat ja auch Subselects...


----------



## clemson (25. Aug 2005)

okey, dann probier ichs mal mit dem ANY...

dann dürfte die abfrage doch so lauten, oder?


```
SELECT g.* FROM odm_group g, odm_mail_config mc WHERE g.id = ANY (SELECT mc.group_id FROM mc)
```


----------



## clemson (25. Aug 2005)

ich verwende jetzt folgende abfrage

```
SELECT g.* FROM odm_group g, odm_mail_config mc WHERE g.id NOT IN (SELECT group_id FROM odm_mail_config)
```

und es funktioniert schon relativ gut..

das problem ist nur (derzeit gibt es 2 mailconfigs und 3 gruppen), dass er die 3. gruppe, welche noch keine mailconfig besitzt, 2 mal zurückgibt...


----------



## AlArenal (25. Aug 2005)

Ich denk du brauchst nen NOT IN ???

EDIT: Ah, erledigt


----------



## AlArenal (25. Aug 2005)

clemson hat gesagt.:
			
		

> das problem ist nur (derzeit gibt es 2 mailconfigs und 3 gruppen), dass er die 3. gruppe, welche noch keine mailconfig besitzt, 2 mal zurückgibt...



DISTINCT ?


----------



## clemson (25. Aug 2005)

juhu, danke das wars!

die endgültige abfrage lautet:

```
SELECT DISTINCT g.* FROM odm_group g, odm_mail_config mc WHERE g.id NOT IN (SELECT group_id FROM odm_mail_config)
```

danke noch mal für deine hilfe alarenal, und ich verbleibe mit der bitte an einen lieben admin/moderator, er möge doch meinen beitrag in ein passenderes forum stecken...


----------

