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 zwei Tabelen zeigt nicht alle einträge!

Begonnen von J.D, Februar 23, 2020, 21:01:40

⏪ vorheriges - nächstes ⏩

J.D

Ich habe eine Tabele Produktionsdaten und eine Störungen,

nun möchte ich in meinem Täglichen Produktionsbericht auch die Störungen mit angezeigt bekommen sofern welche waren...
leider bekomme ich die SQL nicht so hingebogen,
SELECT Produktionsdaten.ID AS Produktionsdaten_ID, Produktionsdaten.Maschinen_ID, Produktionsdaten.Mitarbeiter_ID, Produktionsdaten.Material_ID, Produktionsdaten.Anzahl, Produktionsdaten.Datum AS Produktionsdaten_Datum, Produktionsdaten.von AS Produktionsdaten_von, Produktionsdaten.bis AS Produktionsdaten_bis, Produktionsdaten.Quartal AS Produktionsdaten_Quartal, Produktionsdaten.Tag, Störung.ID AS Störung_ID, Störung.Maschine, Störung.Störung, Störung.Datum AS Störung_Datum, Störung.Von AS Störung_Von, Störung.Bis AS Störung_Bis, Störung.Quartal AS Störung_Quartal, Störung.Bemerkung
FROM Störung INNER JOIN Produktionsdaten ON (Störung.[Datum] = Produktionsdaten.[Datum]) AND (Produktionsdaten.Maschinen_ID = Störung.Maschine);


ZitatTabele Produktion
19.02.2020, Maschine 1, Bla bla, bla bla
20.02.2020, Maschine 1, Bla bla, bla bla
20.02.2020, Maschine 2, Bla bla, bla bla
21.02.2020, Maschine 1, Bla bla, bla bla
21.02.2020, Maschine 2, Bla bla, bla bla

Tabele Störungen
20.02.2020, Maschine 2, Bla bla, bla bla

Zeigt mir in der Abfrage nur den 20.02.2020, Maschine 2
da es für diesen Tag eine Störung gab... :(

Die Tabelen sind über MaschinenID und Datum verknüpft...

ich habe da gerade einen Mega knoten im Gehirn!

Habe schon überlegt die Störungsdaten mit in den Produktionsdaten rein zu schreiben, dazu müsste ich jedoch das Rad neu erfinden und ist ja auch nicht so der Burner die Daten zu vermischen in einer Tabele...auch gibt es manchmal Tage lang keine Störung...

Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2

ebs17

... FROM Störung INNER JOIN Produktionsdaten ...
... filtert auf jene Datensatzpaare, wo es zu einem Produktionsdatum ein Störungsdatum gibt.
... FROM Störung RIGHT JOIN Produktionsdaten ...
... zeigt jedes Produktionsdatum und, wenn vorhanden, auch die Störung dazu.
Mit freundlichem Glück Auf!

Eberhard

J.D

Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2

J.D

Komando zurück...
nächstes Problem,

ZitatProduktions Eintrag 1
Produktions Eintrag 2
Produktions Eintrag 3
Produktions Eintrag 4

Störung 1

ergibt
Zitat
Produktions Eintrag 1 Störung 1
Produktions Eintrag 2 Störung 1
Produktions Eintrag 3 Störung 1
Produktions Eintrag 4 Störung 1

mit zwei Störungen

ZitatProduktions Eintrag 1 Störung 1
Produktions Eintrag 1 Störung 2
Produktions Eintrag 2 Störung 1
Produktions Eintrag 2 Störung 2
Produktions Eintrag 3 Störung 1
Produktions Eintrag 3 Störung 2
Produktions Eintrag 4 Störung 1
Produktions Eintrag 4 Störung 2 

Gibt es noch eine möglichkeit das zu unterbinden?
Es ist nach Maschine und Datum gebunden...

SELECT Produktionsdaten.ID AS ID, Produktionsdaten.Maschinen_ID AS Maschinen_ID, Produktionsdaten.Mitarbeiter_ID AS Mitarbeiter_ID, Produktionsdaten.Material_ID AS Material_ID, Produktionsdaten.Anzahl AS Anzahl, Produktionsdaten.Datum AS Datum, Produktionsdaten.von AS von, Produktionsdaten.bis AS bis, Switch(Hour([von])>=5 And Hour([von])<=13,"1 -Frühschicht",Hour([von])>=14 And Hour([von])<=21,"2 -Spätschicht",Hour([von])>=22 And Hour([von])<=23,"3 -Nachtschicht",Hour([von])>=1 And Hour([von])<6,"3 -Nachtschicht") AS Schicht, Produktionsdaten.Quartal AS Quartal, Produktionsdaten.Tag, Störung.ID AS Störung_ID, Störung.Maschine, Störung.Störung, Störung.Datum AS Störung_Datum, Störung.Von AS Störung_Von, Störung.Bis AS Störung_Bis, Störung.Quartal AS Störung_Quartal, Störung.Bemerkung, DateDiff("s",[Störung_Von],[Störung_Bis])/3600 AS Zeit, DateDiff("n",[Störung_Von],[Störung_Bis]) AS Minuten
FROM Störung RIGHT JOIN Produktionsdaten ON (Störung.[Datum] = Produktionsdaten.[Datum]) AND (Störung.Maschine = Produktionsdaten.Maschinen_ID);


Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2

J.D

Oder anders,
ich habe meinen Bericht wie vorher auch...
Wie bekomme ich da die zweite Abfrage rein das ich die Störzeiten unten auf dem Bericht angezeigt bekomme?

Oder muss ich in die Produktionstabele die Störungs_ID mit eintragen?
Die Störung würde dann wohl angezeigt, aber dann leere Zeilen hervorrufen???

Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2