Saugkraft
Aktives Mitglied
Thread Starter
- Dabei seit
- 20.02.2005
- Beiträge
- 8.998
- Reaktionspunkte
- 3.189
Hallo Leute,
ich habe ein Problem mit einem JOIN, bzw. ich weiß nicht, ob sich das Problem mit einem JOIN lösen lässt.
Tabelle 1:
idt1
mitarbeiter_id (Kommt aus einer dritten Tabelle)
termin
Tabelle 2:
idt2
mitarbeiter_id (Kommt aus einer dritten Tabelle)
idt1 (Fremdschlüssel aus Tabelle 1)
abteilung_id
In Tabelle 1 sind folgende Einträge vorhanden.
In Tabelle 2 sind folgende Einträge vorhanden.
Fett markiert ist, was er mir zusammenfügen soll.
Nun brauche ich die Verknüpfung beider Tabellen in folgender Form:
Das bedeutet, der Server soll mir ein Resultset liefern, in dem alle Felder von Tabelle 1 auftauchen und alle relevanten von Tabelle 2. Nämlich gefiltert nach Mitarbeiter 42 und abteilung_id 666.
Das Problem:
Wenn ich über die mitarbeiter_id joine und nach 42 und 666 filtere (select * from tabelle1 right join tabelle2 on tabelle2.mitarbeiter_id = tabelle1.mitarbeiter_id where mitarbeiter_id = 42 and abteilung_id = 666), dann bekomme ich zwei Zeilen, habe aber Werte doppelt wo null stehen sollte.
Wenn ich über idt1 joine und nach 42 und 666 filtere (select * from tabelle1 right join tabelle2 on tabelle2.idt1 = tabelle1.idt1 where mitarbeiter_id = 42 and abteilung_id = 666), dann bekomme ich nur die erste Zeile.
Lasse ich den Filter 666 weg, erhalte ich auch die Abteilungen 888, 555, usw., filtere ich über OR, bekomme ich auch andere Mitarbeiter_ids.
Ist das lösbar? Was meint ihr?
ich habe ein Problem mit einem JOIN, bzw. ich weiß nicht, ob sich das Problem mit einem JOIN lösen lässt.
Tabelle 1:
idt1
mitarbeiter_id (Kommt aus einer dritten Tabelle)
termin
Tabelle 2:
idt2
mitarbeiter_id (Kommt aus einer dritten Tabelle)
idt1 (Fremdschlüssel aus Tabelle 1)
abteilung_id
In Tabelle 1 sind folgende Einträge vorhanden.
Code:
idt1 mitarbeiter_id termin
----------------------------------
[B]1 42 14.12.2010
2 42 15.12.2010[/B]
3 66 10.12.2010
4 77 19.12.2010
usw.
In Tabelle 2 sind folgende Einträge vorhanden.
Code:
idt2 mitarbeiter_id idt1 abteilung_id
----------------------------------
1 42 9 888
[B]2 42 1 666[/B]
3 66 3 555
4 55 8 333
5 66 7 999
6 77 6 666
Fett markiert ist, was er mir zusammenfügen soll.
Nun brauche ich die Verknüpfung beider Tabellen in folgender Form:
Code:
idt1 idt2 mitarbeiter_id abteilung_id
----------------------------------------------------
1 2 42 666
2 null 42 null
Das bedeutet, der Server soll mir ein Resultset liefern, in dem alle Felder von Tabelle 1 auftauchen und alle relevanten von Tabelle 2. Nämlich gefiltert nach Mitarbeiter 42 und abteilung_id 666.
Das Problem:
Wenn ich über die mitarbeiter_id joine und nach 42 und 666 filtere (select * from tabelle1 right join tabelle2 on tabelle2.mitarbeiter_id = tabelle1.mitarbeiter_id where mitarbeiter_id = 42 and abteilung_id = 666), dann bekomme ich zwei Zeilen, habe aber Werte doppelt wo null stehen sollte.
Code:
idt1 idt2 mitarbeiter_id abteilung_id
----------------------------------------------------
1 2 42 666
2 [B]2[/B] 42 [B]666[/B]
Wenn ich über idt1 joine und nach 42 und 666 filtere (select * from tabelle1 right join tabelle2 on tabelle2.idt1 = tabelle1.idt1 where mitarbeiter_id = 42 and abteilung_id = 666), dann bekomme ich nur die erste Zeile.
Code:
idt1 idt2 mitarbeiter_id abteilung_id
----------------------------------------------------
1 2 42 666
Lasse ich den Filter 666 weg, erhalte ich auch die Abteilungen 888, 555, usw., filtere ich über OR, bekomme ich auch andere Mitarbeiter_ids.
Ist das lösbar? Was meint ihr?
Zuletzt bearbeitet: