Hallo.
Mal abgesehen davon, dass Du, anstatt !!!HILFE!!! zu bölken besser geschrieben hättest, in welcher Umgebung Du Dich bewegst, fehlt auch inhaltlich einiges an Fleisch. Ich kann Dir deswegen nur einen abstrakten Lösungsweg aufzeigen.
Seien Deine Tabellen :
tbl_Fahrer (A)
tbl_Auftrag_vergeben (B)
tbl_Auftrag_neu ©
wobei A und B mit einer n:m-Relation verknüpft sind (ein Fahrer kann mehrere Aufträge haben, ein Auftrag aber auch von mehreren Fahrern bedient werden). Dann brauchst Du eine Tabelle tbl_Auftrag_Fahrer (D) mit der Verknüpfung der Primärschlüssel aus A und B.
Zur Verfügung stehen mir das STARTDATUM und das ENDEDATUM.
für den neu zu vergebenden Auftrag aus Tabelle C und für die bereits vergebenen Aufträge aus der Relation AB.
Ich muß jetzt die Fahrer mir ausgeben lassen die für diesen
Zeitraum noch zur Verfügung stehen.
SELECT tbl_Fahrer.Fahrer_ID, Fahrer_Name, tbl_Auftrag_vergeben.Auftrag_ID, Auftrag_Start, Auftrag_Ende FROM tbl_Fahrer, tbl_Auftrag_vergeben, tbl_Auftrag_Fahrer INNER JOIN ON (tbl_Auftrag_Fahrer.FahrerID=tbl_Fahrer.FahrerID INNER JOIN ON (tbl_Auftrag_vergeben.AuftragID=tbl_Auftrag_Fahrer.AuftragID));
das sollte Dir alle Fahrer mit ihren Aufträgen + Beginn und Ende liefern. Nennen wir diesen Sums der Einfachheit halber Query_X.
SELECT Auftrag_ID, Auftrag_Start, Auftrag_Ende FROM tbl_Auftrag_neu;
zeigt Dir Beginn- und Endtermin für alle neuen Aufträge. Das sei die Query_Y.
Fiktiver Datenbestand Query_X
1 Müller 4711 5.9.06 8.9.06
2 Meier 4712 3.9.06 6.9.06
3 Meier 4713 7.9.06 9.9.06
4 Schulze 4714 2.9.06 5.9.06
Fiktiver Datenbestand Query_Y
4715 8.9.06 9.9.06
4716 10.9.06 11.9.06
Nun möchtest Du gern als Ergebnis haben, dass Du für Auftrag 4715 nur den Schulze, für 4716 aber jeden der vier Hansels einsetzen kannst … richtig verstanden?
SELECT Query_Y.Auftrag_ID, Query_X.Fahrer_ID, Query_X.Fahrer_Name, Query_Y.Auftrag_Start, Query_Y.Auftrag_Ende FROM Query_X, Query_Y WHERE ((Query_Y.Auftrag_Start>Query_X.Auftrag_Ende) OR (Query_Y_Auftrag_Ende4715 Schulze 8.9.06 9.9.06
4715 Meier 8.9.06 9.9.06
4716 Müller 10.9.06 11.9.06
4716 Meier 10.9.06 11.9.06
4716 Schulze 10.9.06 11.9.06Was fast das richtige Ergebnis ist. Der zweite Datensatz ist ein falsches Ergebnis, weil Meier ja bereits einen Auftrag an diesem Tag hat. Da aber ein satzweiser Vergleich vorgenommen wurde, wird dieser falsche Satz mit ausgegeben.
Hm. An dieser Stelle müsste ich tatsächlich wissen, welches System Du hast - wir müssten nämlich an irgendeiner Stelle noch aggregieren, bevor wir mit Query_Z loslegen können.
Tippfehler vorbehalten - meine Brause kann kein SQL.
Waiting for input,
Eillicht zu Vensre