Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Abfrage von mehreren Datensätzen

Begonnen von amo1453, März 16, 2023, 18:28:55

⏪ vorheriges - nächstes ⏩

amo1453

Hallo Zusammen,
ich hoffe ich bin hier richtig und mache kein doppeltes Thema auf.

Folgendes Problem:

Ich habe mehrere Tabellen erstellt, unter anderem eine Tabelle mit Fahrzeugen, Fahrern und Aufträgen.
Ich habe jeweils ein Fahrzeug und ein Fahrer in einem Feld in der Tabelle Auftrag zu einem Auftrag zugeordnet. Als Werte: die ID des Fahrzeuges(gleichzeitig das KFZ-Kennzeichen) und die ID des Fahrers.
In der Tabelle sind mehrer Felder inbegriffen sowie auch das Auftragsdatum.

Nun habe ich eine Abfrage erstellt, die mir alle Inforamtionen bezügliche der anderen Tabellen filtert, allerdings bekomme ich es einfach nicht hin, dass mir nur die Fahrzeuge und Fahrer anzeigt werden, die zu einem bestimmten Auftragsdatum keinem Auftrag zugeordnet sind.

Hat Jemand vieleicht eine Idee, wie man dies lösen könnte?

Ich bedanke mich für jede Hilfe. :)

(Im Anhang einige Screenshots für ein besseres Verständnis)

LG
Amo1453

Beaker s.a.

Du brauchst im Auftragsbuch jeweils einen Fremdschlüssel auf Fahrzeug und Fahrer.
Das Kennzeichen würde ich aber nicht als PK verwenden, weil Text. Spendiere der
Tabelle ruhig einen AutoWert als PK. Das KZ kannst du ja trotzdem als eindeutig
indizieren.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MzKlMu

#2
Hallo,
wieso hat die Abfrage keine Verknüpfung der Tabellen?
Ohne Verknüpfungen hast Du eine Multiplikation der Datensätze.
So wie das aussieht gibt es keine Fremdschlüsselfelder, also können auch keine Verknüpfungen angelegt werden.
Zeige mal ein Bild des Beziehungsfensters.
Eine Datenbank braucht zwingend Beziehungen.
Da liegt auch noch mehr im Argen.
- Wieso gibt es eine FahrerId und eine ID ?
- Keine Leer und Sonderzeichen in Feldnamen
- Für die Adressen sollte es Tabellen geben, oder willst Du jedes mal die Adressen eingeben (mit den dann möglichen Fehlern?).
- Auch für die Kunden ist eine TAbelle erforderlich.

Du solltest Dich mit den Grundlagen zu Access beschäftigen, Access muss man lernen, da geht nix intuitiv.

Hier etwas mehr Theorie:
https://www.hdm-stuttgart.de/~riekert/lehre/db-kelz/
Und hier etwas mehr Praxis:
https://www.access-tutorial.de/
Gruß Klaus

amo1453

Hier die gewünschte Beziehungsliste:

amo1453

Zitat von: Beaker s.a. am März 16, 2023, 19:00:30Du brauchst im Auftragsbuch jeweils einen Fremdschlüssel auf Fahrzeug und Fahrer.
Das Kennzeichen würde ich aber nicht als PK verwenden, weil Text. Spendiere der
Tabelle ruhig einen AutoWert als PK. Das KZ kannst du ja trotzdem als eindeutig
indizieren.

Ertmal herzlichen Dank für die Info.

Das habe ich jetzt gemacht. Und wie binde ich nun das Datum mit in die Abfrage ein? Damit nur die Kennzeichen angezeigt werden die diesem Datum nicht zugordnet sind. (Gleiches gilt natürlich auch für Fahrer).

LG
Amo1453

amo1453

#5
Zitat von: MzKlMu am März 16, 2023, 19:02:12Du solltest Dich mit den Grundlagen zu Access beschäftigen, Access muss man lernen, da geht nix intuitiv.

Danke für deinen Beitrag.
Die Adresse wird später von einer API übernommen. Ich wollte nur intuitiv dieses Problem lösen, um es dann sauber in meiner eigentlichen Arbeit einzupflegen. Aber ja, ich bin noch am lernen und weiterbilden.

LG
amo1453

Anmerkung:
Bitte keine vollständigen Beiträge zitieren. MzKlMu

MzKlMu

Hallo,
Deine Abfrage braucht die Verknüpfungen über die Schlüsselfelder.
Gruß Klaus


amo1453

Zitat von: MzKlMu am März 16, 2023, 19:49:19Hallo,
Deine Abfrage braucht die Verknüpfungen über die Schlüsselfelder.

Das habe ich nun hinbekommen, kriege nur das mit dem Datum nicht hin in der Abfrage.

MzKlMu

Hallo,
zeige die Abfrage (SQL).

Bitte immer alles zeigen und erklären, wie sonst soll man helfen können.

In den Beziehungen sollte immer referentielle Integrität eingestellt werden, bitte noch nachholen. Wenn das nicht geht, gibt es Fehler in der Struktur und/oder in den Daten.
Gruß Klaus

amo1453

#10
Hallo Klaus,
hier die SQL.
Wenn die Beziehungen bestehen gibt mir die Abfrage keine Ergebnisse. Wenn ich sie lösche, liefert es Ergebnisse.
Es soll halt wiklich alle Fahrzeuge und Fahrer ausgeben, die nicht zu dem im Feld Datum eingetragenem Datum zugordnet sind. Falls ein anderes Datum abgefragt wird, sollen das Fahrzeug und auch der Fahrer wieder in der Abfrage mitgelistet werden.

z.B. steht im Auftrag als Datum der 01.04.2023 eingtragen. und als zugeteiltes Fahrzeug die ID "1" und als zugeteilter Fahrer ebenfals die ID "1" als Fremdscglüssel:
jetzt sollen, wenn ich den 01.04.2023 eingbe als Datum, diese beiden IDs nicht aufgelistet werden.
Sollte ich aber z.B. den 05.05.2023 als Datumwert in die Abfrage stellen, sollen sie wieder gelistet werden, mit allen anderen Fahrern und Fahrzeugen auch.

Ich hoffe ich konnte es ausführlich erklären.

MzKlMu

#11
Hallo,
SQL bitte immer als Text, niemals als Bild. Aus einem Bild kann man nichts kopieren.

Bezüglich Deiner PN: Wir bleiben hier im Forum.
Gruß Klaus

amo1453

SELECT tblFahrzeugliste.IDFahrzeug, tblFahrzeugliste.Kennzeichen, tblFahrzeugliste.Fahrzeugklasse, tblFahrzeugliste.In_Wartung, tblFahrerliste.FahrerID, tblFahrerliste.Vorname, tblFahrerliste.Nachname, tblFahrerliste.Führerscheinklasse, tblFahrerliste.Schicht
FROM tblAuftragsbuch, tblFahrerliste, tblFahrzeugliste
WHERE (((tblFahrzeugliste.IDFahrzeug)<>[FREMDfaz]) AND ((tblFahrzeugliste.Fahrzeugklasse)=[Führerscheinklasse]) AND ((tblFahrzeugliste.In_Wartung)=2) AND ((tblFahrerliste.FahrerID)<>[FREMDfa]) AND ((tblFahrerliste.Schicht)=[Schicht eingeben Früh gleich 4, Spät gleich 5, Nacht gleich 6]));

amo1453

#13
Ich habe die Abfrage oben überarbeitet. Nun sieht sie so aus (unten) und funktioniert genauso, wie ich es wollte (Nach 9 Stunden nonstop  :o ) Allerdings frage ich mich, warum ich die Beziehungen im Abfragenentwurf entfernen musste. Denn bestehen die Beziehungen im Abfrageentwurf, geht es nicht. (In der Beziehungstabelle sind die Verbindungen aber Vorhanden, lediglich in dem Abfrageassistenten muss ich sie entfernen.)
Vielleicht weiss ja Jemand warum.


SELECT tblFahrzeugliste.IDFahrzeug, tblFahrzeugliste.Kennzeichen, tblFahrzeugliste.Fahrzeugklasse, tblFahrzeugliste.In_Wartung, tblFahrerliste.FahrerID, tblFahrerliste.Vorname, tblFahrerliste.Nachname, tblFahrerliste.Führerscheinklasse, tblFahrerliste.Schicht
FROM tblAuftragsbuch, tblFahrerliste, tblFahrzeugliste
WHERE (((tblFahrzeugliste.Fahrzeugklasse)=[Führerscheinklasse]) AND ((tblFahrzeugliste.In_Wartung)=2) AND ((tblFahrerliste.Schicht)=[Schicht eingeben Früh gleich 4, Spät gleich 5, Nacht gleich 6]) AND ((tblAuftragsbuch.FREMDfaz)<>[IDFahrzeug]) AND ((tblAuftragsbuch.FREMDfa)<>[FahrerID])) OR (((tblFahrzeugliste.Fahrzeugklasse)=[Führerscheinklasse]) AND ((tblFahrzeugliste.In_Wartung)=2) AND ((tblFahrerliste.Schicht)=[Schicht eingeben Früh gleich 4, Spät gleich 5, Nacht gleich 6]) AND ((tblAuftragsbuch.FREMDfa)<>[FahrerID]) AND ((tblAuftragsbuch.[Datum])<>[Datum eingeben]));

amo1453

#14
ok geht doch nicht. Sobald ein zweiter Datensatz in der Tabelle Aufträge vorhanden ist, ist Feierabend.

Wo ist der Fehler  :-\