zwei Tabellen

zwei Tabellen

am 31.01.2008 10:28:13 von letters

Hallo,

ich habe zwei Tabellen mit jeweils identischen Feldern. Es soll nun
abgefragt werden, ob ein bestimmter Satz Daten sich in einer dieser beiden
tabellen befindet. Ich habe es so versucht:

SELECT k.id,s.id FROM mitarbeiter as k, stammdatenmitarbeiter as s WHERE
(k.name ="Test1" AND k.vorname = "Test2" AND k.mail = "info@test.de") OR
(s.name ="Test1" AND s.vorname = "Test2" AND s.mail = "info@test.de")

in der Tabelle stammdatenmitarbeiter als s gibt es genau diesen datensatz.

Das Ergebnis ist allerings leer. Warum? Durch das OR müsste es doch eine
Ausgabe geben.
Wenn ich nur in s suche, wird ein Datensatz gefunden.

Wenn ich eine UNION verwende klappt es wieder, aber wieso nicht im obigen
Fall?

(SELECT id FROM mitarbeiter WHERE name =Test1 AND vorname = Test2 AND mail
= "info@test.de") UNION (SELECT id FROM stammdatenmitarbeiter WHERE name
=Test1 AND vorname = Test2 AND mail = "info@test.de")

Das klappt.

Mathias

Re: zwei Tabellen

am 31.01.2008 10:34:24 von Michael Ziegler

Mathias Fiedler wrote:
> ich habe zwei Tabellen mit jeweils identischen Feldern.

Das riecht stark nach suboptimalem Design. Kannst du nicht ein Feld
ist_stammdatenmitarbeiter einführen und beide Tabellen kombinieren? Dann
hättest du solche Probleme nicht mehr.

> Wenn ich eine UNION verwende klappt es wieder, aber wieso nicht im obigen
> Fall?

Weil ein UNION genau das macht was du eigentlich willst: Alle DS der
ersten Tabelle gefolgt von allen der 2. Tabelle ausgeben.

Der erste Code joined beide Tabellen, was ein irrsinniger Aufwand ist.
Du solltest dein Design dringend überarbeiten.

M