Zwei Spalten beim SELECT "zusammenführen"
am 09.08.2006 21:33:12 von Dirk Einecke
Hi,
ich habe eine Tabelle wo es u.a. zwei Spalten gibt - eine mit einer
privaten und eine mit einer dienstliche E-Mail-Adresse. Ich möchte nun
in meinem SQL-Statement folgendes realisieren:
Wenn eine dienstliche E-Mail-Adresse angegeben ist, dann nimm diese.
Wenn keine dienstliche E-Mail-Adresse angegeben ist, dann nimm die
private E-Mail-Adresse.
Kann man so etwas machen?
Wenn ja - wie?
Herzlichst
Dirk Einecke
Re: Zwei Spalten beim SELECT "zusammenführen"
am 09.08.2006 21:46:53 von Andreas
"Dirk Einecke" schrieb im Newsbeitrag
news:1155151992.900165.59110@b28g2000cwb.googlegroups.com...
Hi,
ich habe eine Tabelle wo es u.a. zwei Spalten gibt - eine mit einer
privaten und eine mit einer dienstliche E-Mail-Adresse. Ich möchte nun
in meinem SQL-Statement folgendes realisieren:
Wenn eine dienstliche E-Mail-Adresse angegeben ist, dann nimm diese.
Wenn keine dienstliche E-Mail-Adresse angegeben ist, dann nimm die
private E-Mail-Adresse.
Kann man so etwas machen?
Wenn ja - wie?
SELECT IF (email_work = NULL, email_private, email_work ) AS email
http://dev.mysql.com/doc/refman/5.1/de/control-flow-function s.html
Re: Zwei Spalten beim SELECT "zusammenführen"
am 09.08.2006 22:15:38 von Dirk Einecke
Hi,
Andreas wrote:
> SELECT IF (email_work = NULL, email_private, email_work ) AS email
>
> http://dev.mysql.com/doc/refman/5.1/de/control-flow-function s.html
Vielen Dank.
Genau das habe ich gesucht.
Herzlichst
Dirk Einecke
Re: Zwei Spalten beim SELECT "zusammenführen"
am 09.08.2006 22:56:34 von Thomas Rachel
Hallo Andreas,
bitte lasse beim Zitieren die ">" davor, denn ansonsten ist Dein Text und
der Deines Vorredners nicht auseinanderzuhalten.
Andreas wrote:
> SELECT IF (email_work = NULL, email_private, email_work ) AS email
Nein. Ein Vergleich mit = ergibt NULL, wenn mindestens einer der
Operanden NULL ist.
Test auf NULL macht man mit "IS [NOT] NULL".
Hier also:
SELECT IF (email_work = NULL, email_private, email_work ) AS email
Könnte man (kürzer und IMHO schöner) so schreiben:
SELECT IFNULL(email_work,email_private) AS email
Diese beiden Lösungen sind kurz und prägnant, aber leider
MySQL-spezifisch. Wenn man Wert auf möglichst Standard-SQL-kompatibles
Programmieren legt, schreibt man:
SELECT CASE WHEN email_work IS NULL THEN email_private ELSE email_work AS
email
oder kürzer
SELECT COALESCE(email_work,email_private) AS email
HTH,
Thomas
--
87.166253% der Statistiken spielen eine Genauigkeit vor,
die durch die angewandte Methode nicht gerechtfertigt wird.