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 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