SQL - Zwei Tabellen zu Einer kombinieren

Liebe/-r Experte/-in,
ich habe folgendes Problem:
Wir habe eine Tabelle „Urlaubsantrag“ in der es u.a. folgender Felder gibt: „Username“,„Urlaubsart“,
„von“, „bis“.
Wir haben eine zweite, davon völlig unabhängige Tabelle „Dienstreiseantrag“. Hier gibt es u.a. folgende Felder „Username“, „Reise_nach“ ,„von“, „bis“.

WIr benötigen nun eine neue Tabelle (View), die die o.a. beiden Tabellen kombiniert und u.a. folgende Felder beinhaltet:
„Username“, „Abwesenheitsart“, „von“, „bis“.
Wobei im Feld „Abwesenheitsart“ entweder die „Urlaubsart“ aus der Tabelle „Urlaubsantrag“ oder aber der Text steht, wenn es sich um eine Dienstreise handelt.

Wie kann ich das realisieren?
Für einen Tipp wäre ich mehr als dankbar.

Liebe Grüße,
Jochen

Hallo Jochen,

das klingt nach keiner schönen Struktur.
Kannst du diese hier Online stellen?

Grundsätzlich „verbindest“ du Tabellen mit einem JOIN. Besser formuliert: über ein JOIN mehrere Tabellen zu einer virtuellen Tabelle zusammengefasst. Hierbei umfasst die Menge an Informationen nur die definierte Menge.
Gegeben sei dir folgendes Beispiel:

SELECT tbl_urlaub.urlaubsart, tbl_dienstreise.dienstantrag
FROM tbl_urlaub INNER JOIN
dienstreise ON tbl_urlaub.username_ID = tbl_dienstreise.username_ID
WHERE (dbo.tbl_urlaub.urlaubsart= ‚Kurzurlaub‘)

Grüße
Matze

Das wäre der einfache Ansatz:

create view Antrag as
select Username, Urlaubsart as Abwesenheitsart, von, bis
from Urlaubsantrag
union all
select Username, ‚Dienstreise‘, von, bis
from Dienstreiseantrag

Hallo Jochen,
auf folgende Art sollte es funtionieren:

>>select username, Reise_nach as Abwesenheitsart, von, bis from Urlaubsantrag
union
select username, ‚‘ as Abwesenheitsart, von, bis from Urlaubsantrag

Hallo Jochen,

ich fürchte, dieses Problem bekommt man nur mit PL/SQL z.B. in Oracle hin. Eine simple Alternative wäre die Tabelle Urlaubsantrag derart zu befüllen, das überall dort, wo nichts im Feld Urlaubsart drin steht (Feld = Null oder Feld = ‚‘), eben Dienstreise eingetragen wird (Update-Befehl).

So ganz habe ich das Problem aber noch nicht verstanden, da ja beide Tabellen unabhängig voneinander sein sollen - wenn sie unabhängig sind, kann man sie eigentlich auch nicht verknüpfen - auch wenn hier das Feld Username dazu einlädt.

Woran machst Du fest, ob es sich in der ersten Tabelle um eine Dienstreise handelt? Wenn nichts im Feld Urlaubsart steht?
Steht immer dann, wenn dort nichts steht, ganz bestimmt eine Dienstreise dieses Users in der anderen Tabelle?

Vielleicht brauch ich einfach nur ein paar Besipieldatensätze (Quelltabellen + Ergebnistabelle/View), um das Ziel des Ganzen besser zu durchschauen!? :wink:

Wenn es bereits weiter hilft, dann ist ja OK, ansonsten bitte noch etwas näher erläutern.

Grüße
Surfin Willy

Hallo Jochen!

Versuche es mal mit:

SELECT username, ‚Urlaub‘ Abwesenheitsart, von, bis
FROM urlaubsantrag
UNION
SELECT username, ‚Dienstreise‘ Abwesenheitsart, von, bis
FROM dienstreiseantrag;

Ich gehe mal davon aus, dass Du das mit dem View oder dem Anlegen der Tabelle selbst darum basteln kannst. Man kann auch bei beiden Select-Ausdrücken noch WHERE-Klauseln hinzufügen, wenn nur ausgewählte Datensätze in dem Ergebnis auftreten sollen.

Viele Grüße
Volkmar