[MS SQL] - Select Statment

BGrojer

Mitglied
Folgende Datenbankfelder/Tabellen:
sql.jpg


Mein SQL STMT (soll ein view werden im MS SQL Server 2000):
SELECT DISTINCT
TOP 100 PERCENT dbo.tbl_urlaub.ID AS ID, dbo.tbl_urlaub.int_mitarbeiter_ID AS int_mitarbeiter_ID, dbo.tbl_urlaubsart.str_bezeichnung AS str_urlaub,
dbo.tbl_unternehmen.str_bezeichnung AS str_unternehmen, dbo.tbl_urlaub.date_von AS date_von, dbo.tbl_urlaub.date_bis AS date_bis
FROM dbo.tbl_unternehmen RIGHT OUTER JOIN
dbo.tbl_ma_change_unternehmen ON dbo.tbl_unternehmen.ID = dbo.tbl_ma_change_unternehmen.int_unternehmen_ID RIGHT OUTER JOIN
dbo.tbl_urlaub ON dbo.tbl_ma_change_unternehmen.date_von <= dbo.tbl_urlaub.date_von AND
dbo.tbl_ma_change_unternehmen.int_mitarbeiter_ID = dbo.tbl_urlaub.int_mitarbeiter_ID LEFT OUTER JOIN
dbo.tbl_urlaubsart ON dbo.tbl_urlaub.int_urlaubsart_ID = dbo.tbl_urlaubsart.ID
WHERE (dbo.tbl_urlaub.date_von BETWEEN dbo.tbl_ma_change_unternehmen.date_von AND dbo.tbl_ma_change_unternehmen.date_bis) OR
(dbo.tbl_urlaub.date_von > dbo.tbl_ma_change_unternehmen.date_von) AND (dbo.tbl_ma_change_unternehmen.date_bis IS NULL)

Mein Problem:
Es werden eigentlich alle Daten richtig zurückgeben (immer mit richtigem / aktuellen Unternehmen). Aber leider werden die Datensätze nicht zurückgeben wo der Mitarbeiter in keinen Unternehmen aktiv ist.
Hat irgendwer wenigstens einen Ansatz?

lg und Danke :o)
 
Hi, hast du es schon mal probiert Aus dem Right ein Left Outer Join zu machen, bei dem zwischen tbl_unternehmen und tbl_ma_change_unternehmen
 
Danke für die Hilfe! Sorry das ich erst jetzt antworten kann! Ändert leider immer noch nichts dran,- es wird nicht alles zurückgegeben.
 
hi, weiß jetzt im Moment auch nicht weiter. Ich kann dir höchstens einen Tip geben wie ich rausfinde, wo der Fehler liegt.

Ich bastel als erstes das vom Enterprise Manager generierte Select-Statement auseinander, so dass ich sehen kann, von welchen Tabellen wird geholt und zu welchen Klauseln, also nach dem Schema SELECT ... FROM ... WHERE ...
Anschließend Zerleg ich dsa Select-Statement in seine einzelteile und für die einzelen Selects pro Tabelle einzeln aus, um zu sehen, bei welcher Tabelle bzw. Klausel der Fehler liegt.
Frei nach dem Motto den Feind einkreisen ;)

Ich hoffe, das hilft dir weiter
 
Zurück