Prophet_of_Kruphix
-
Gesamte Inhalte
7 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von Prophet_of_Kruphix
-
-
vor einer Stunde schrieb Whiz-zarD:
Die Stunden werden summiert. Die Unterabfrage:
SELECT Laufzeit.MaschineID, SUM(Laufzeit.Stunden) AS Stunden FROM Laufzeit INNER JOIN Maschine ON Maschine.MaschineID = Laufzeit.MaschineID WHERE Laufzeit.Datum > Maschine.DatumLetzteWartung GROUP BY Laufzeit.MaschineID
Gibt als Ergebnis die summierten Stunden pro Maschine, wo das Datum größer als das Datum der letzten Wartung ist.
Beispiel:
Folgende Daten sind gegeben:
Laufzeit: MaschineID Datum Laufzeit 1 31.10.2019 5 1 20.11.2019 4 1 21.11.2019 8 Maschine: MaschineID MaschineTypID DatumLetzteWartung 1 1 01.11.2019
Die Abfrage würde nun folgendes Ergebnis liefern:
MaschineID Stunden 1 12
Der Datensatz mit den 5 Stunden wird außer Acht gelassen, weil das Datum kleiner als das Datum der letzten Wartung ist und somit keine Rolle mehr spielt.
Die Aufgabe war, dass man herausfinden soll, welche Maschine gewartet werden muss, wenn sie noch 100 Stunden benutzt wird. Also muss man auf die derzeitige Nutzung 100 Stunden drauf addieren und diesem Wert den Wartungsintervall vergleichen.
Ah ich sehe grad ich hab mich verlesen. Dachte du machst dein SUM nur im äußeren WHERE.
Bei dem SUM im JOIN wird die Stunden Property von Laufzeit "Überschrieben", so dass in jedem LaufzeitObjekt die Stunden Property gleich der Gesamtzahl ist oder?
-
vor 58 Minuten schrieb Whiz-zarD:
SELECT Kunde.*, Maschine.MaschineID, Laufzeit.Stunden FROM Kunde INNER JOIN Maschine ON Maschine.KundeID = Kunde.KundeID INNER JOIN MaschinenTyp ON MaschinenTyp.MaschineTypID = Maschine.MaschineTypID INNER JOIN ( SELECT Laufzeit.MaschineID, SUM(Laufzeit.Stunden) AS Stunden FROM Laufzeit INNER JOIN Maschine ON Maschine.MaschineID = Laufzeit.MaschineID WHERE Laufzeit.Datum > Maschine.DatumLetzteWartung GROUP BY Laufzeit.MaschineID ) Laufzeit ON Laufzeit.MaschineID = Maschine.MaschineID WHERE Laufzeit.Stunden + 100 > MaschinenTyp.WartungsintervallInStunden
DU musst die Stunden Summieren, es sind immer nur die Anzahl Stunden pro Datum. dein Lösungsansatz ist so also falsch. warum machst du den Sum im Where aber im Select nicht? @Whi-zarD
-
Also Die Laufzeit hat ein Datum mit im Table. Es wird also immer die Stunden gespeichert die die Maschine an einem bestimmten Tag gelaufen ist, ansonsten macht das Feld keinen sinn und es wäre keine 3 Normalform.
und zu
vor einer Stunde schrieb Tobeje:Bist du dir da sicher? In der SQL Syntax(Auszug) von der IHK gibt es kein "JOIN" befehl sondern nur die Standard Join befehle (INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN). Ich denke mal man sollte schon die Syntax von der IHK verwenden.
Das mit der Summe der Stunden ist halt auch wieder Definition Sache was oder wie in der Datenbank abgespeichert ist und das ist leider nicht beschrieben. Woher soll man wissen ob es die Summe alle Laufzeiten nach der Letzten Wartung ist?
Ein JOIN ist das gleiche wie ein INNER JOIN.
Die Lösung ist (bis auf das ich das INNER bei den Joins weggelassen hab) so von der IHK vorgegeben. -
Bin auf der Suche nach Lösungen für die FIAN GA1 Winter17/18, Sommer 18, Winter 18/19 und Sommer 19.
Des weiteren suche ich Lösungen für FIAN GA2 Sommer 19.
-
Sicher richtige Lösung aus Quellen:
SELECT K. KundeID, K.KundeFirma, K.KundeAdresse, M.MaschineId,(SELECT SUM(L.Stunden)
FROM Laufzeit AS L
WHERE L.MaschineID = M.MaschineID AND L.Datum > M.DatumLetzteWartung ) AS Laufzeit
FROM Kunde AS K JOIN Maschine AS M
ON K.KundeID = M.KundeID
JOIN Maschinentyp AS MT
ON M.MaschineTypID = MT.MaschineTypID
WHERE (SELECT SUM (L.Stunden)
FROM Laufzeit AS L
WHERE L.MaschineID = M.MaschineID AND L.Datum > M.DatumLetzteWartung ) +100 > MT.WartungsintervallInStunedn;
FIAE Sommer 2019- GA1-Aufgabe 5b
in Prüfungsaufgaben und -lösungen
Geschrieben
Das is das was ich meinte. Passt sehr gut.