Hilfe bei einem SQL-Query

Hilfe bei einem SQL-Query

am 03.12.2007 15:34:25 von Florian Lindner

Hallo,
ich probiere gerade eine SQL Abfrage zu formulieren, aber so richtig
bekomme ich das nicht hin.

Ich habe Tabelle domains:

domain | mail
-------------
xgm.de | TRUE
abc.de | FALSE

und eine Tabelle http_aliases

domain | alias
--------------
xgm.de | serpent.de
xgm.de | florian-lindner.de
abc.de | def.de

Nun würde ich gerne eine Abfrage formulieren, die mir ergibt, ob eine
domain oder ein alias Mail empfängt. Eine domain empfängt, wenn mail =
TRUE ist. Ein alias empfängt, wenn mail = TRUE für die zugehörige
domain ist.

Ich denke der erste Schritt ist eine Abfrage die so eine Tabelle
zurückgibt:

domain | mail
-------------------------
xgm.de | TRUE
serpent.de | TRUE
florian-lindner.de | TRUE
abc.de | FALSE
def.de | FALSE

Nun könnte ich die passende Domain so auswählen:

SELECT domain FROM ... WHERE domain=%d and mail = TRUE

Aber wie komme ich soweit?

Vielen Dank,

Florian

Re: Hilfe bei einem SQL-Query

am 03.12.2007 15:56:44 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: Hilfe bei einem SQL-Query

am 03.12.2007 16:19:31 von Florian Lindner

Andreas Kretschmer schrieb:

> begin Florian Lindner schrieb:
>> Hallo,
>> ich probiere gerade eine SQL Abfrage zu formulieren, aber so richtig
>> bekomme ich das nicht hin.
>>
>> Ich habe Tabelle domains:
>>
>> domain | mail
>> -------------
>> xgm.de | TRUE
>> abc.de | FALSE
>>
>> und eine Tabelle http_aliases
>>
>> domain | alias
>> --------------
>> xgm.de | serpent.de
>> xgm.de | florian-lindner.de
>> abc.de | def.de
>>
>> Nun würde ich gerne eine Abfrage formulieren, die mir ergibt, ob eine
>> domain oder ein alias Mail empfängt. Eine domain empfängt, wenn mail =
>> TRUE ist. Ein alias empfängt, wenn mail = TRUE für die zugehörige
>> domain ist.
>
> test=*# select a.domain from domains a where a.mail union all select
> alias from http_aliases where domain in (select domain from domains
> where mail);
> domain
> --------------------
> xgm.de
> serpent.de
> florian-lindner.de
> (3 rows)

Hallo,
vielen Dank! Ich habe Deine Abfrage noch etwas erweitert und jetzt klappt
alles so:

SELECT domain FROM domains WHERE domains.mail AND domain = '%d'
UNION ALL
SELECT alias FROM http_aliases WHERE domain IN (SELECT domain FROM domains
WHERE mail) AND alias = '%d'

in %d steht die Domain drin, die abgefragt wird.

Danke für Deine Hilfe!

Florian