Werte aus Tabellen wahlweise addieren
Moderator: Moderatoren
Re: Werte aus Tabellen wahlweise addieren
Hallo Jan7350,
die Funktion, die Du brauchst, heißt IFNULL. Maschine1 + Maschine2 liefert dann kein Ergebnis, wenn ein Feld leer ist. Das ist etwas anderes, als wenn ein Feld '0' ist. IFNULL("Maschine1",0) + IFNULL("Maschine2",0) ersetzt das leere Feld durch eine '0', mit der Du rechnen kannst.
Gruß
Robert
die Funktion, die Du brauchst, heißt IFNULL. Maschine1 + Maschine2 liefert dann kein Ergebnis, wenn ein Feld leer ist. Das ist etwas anderes, als wenn ein Feld '0' ist. IFNULL("Maschine1",0) + IFNULL("Maschine2",0) ersetzt das leere Feld durch eine '0', mit der Du rechnen kannst.
Gruß
Robert
Re: Werte aus Tabellen wahlweise addieren
Halli Hallo,
ich habe da nochmal eine Frage zu dem Befehl von IFNULL.
Und zwar habe ich das jetzt mit zwei Maschinen gemacht. Wenn in der JOB-Datenbank ein Auftrag ist, wird er an zwei Maschinen gefertigt.
Allerdings wird er in der Ansicht nur korrekt mit der Restmenge angezeigt, wenn beide Maschinen den Auftrag drin hatten. Trotz IFNULL.
Kann mir jemand helfen? Der Auftrag soll in der Ansicht immer aktualisiert mit der noch zu produzierenden Menge angezeigt werden. Auch wenn er in der Tabelle von Maschine 2 z.B. nicht vorhanden ist.
Ich habe die Datenbank mal angehangen.
Wenn mir jemand helfen könnte, wäre das super !
ich habe da nochmal eine Frage zu dem Befehl von IFNULL.
Und zwar habe ich das jetzt mit zwei Maschinen gemacht. Wenn in der JOB-Datenbank ein Auftrag ist, wird er an zwei Maschinen gefertigt.
Allerdings wird er in der Ansicht nur korrekt mit der Restmenge angezeigt, wenn beide Maschinen den Auftrag drin hatten. Trotz IFNULL.
Kann mir jemand helfen? Der Auftrag soll in der Ansicht immer aktualisiert mit der noch zu produzierenden Menge angezeigt werden. Auch wenn er in der Tabelle von Maschine 2 z.B. nicht vorhanden ist.
Ich habe die Datenbank mal angehangen.
Wenn mir jemand helfen könnte, wäre das super !
Re: Werte aus Tabellen wahlweise addieren
Hallo Jan,
vermutlich meinst Du das so:
Zum einen ist die Tabelle "job" maßgebend - unabhängig ob in den maschinentabellen etwas steht. Das wird über den linken Verbund (LEFT JOIN) zu "job" geregelt. Dann muss noch in den IFNULL-Fassungen die Tabelle zusätzlich zu dem Feldbegriff stehen, weil ja Felder aus zwei Tabellen abgefragt werden sollen, die gleiche Namen haben.
Gruß
Robert
vermutlich meinst Du das so:
Code: Alles auswählen
SELECT "job"."ID", "job"."Auflage", "Auflage" - IFNULL( "maschine1"."Produziert", 0 ) - IFNULL( "maschine2"."Produziert", 0 ) AS "Noch zu produzieren" FROM "job" LEFT JOIN "maschine1" ON "maschine1"."ID" = "job"."ID" LEFT JOIN "maschine2" ON "maschine2"."ID" = "job"."ID"
Gruß
Robert
Re: Werte aus Tabellen wahlweise addieren
Hey Robert,
mal wieder vielen Dank !
Also in meiner kleinen Datenbank, die ich vorher gepostet habe, funktionierte das jetzt Prima.
Ich habe nun eine neue programmiert und versucht das ganze nochmal selbstständig anzuwenden. Leider wird mir, mal wieder, nur die Menge angezeigt, wenn beide Maschinen einen Auftrag produzieren.
Fällt dir, oder wem anderes, der Fehler auf? Ich habe jetzt ca. 2h rumprobiert....aber will nicht klappen
PS: Habe mir jetzt das Base Handbuch 5.0 bestellt. Ich hoffe, dass ich hier dann weniger nerven muss
mal wieder vielen Dank !
Also in meiner kleinen Datenbank, die ich vorher gepostet habe, funktionierte das jetzt Prima.
Ich habe nun eine neue programmiert und versucht das ganze nochmal selbstständig anzuwenden. Leider wird mir, mal wieder, nur die Menge angezeigt, wenn beide Maschinen einen Auftrag produzieren.
SELECT "Druckliste"."Auftragsnummer", "Druckliste"."Signatur", "Druckliste"."Rüstbogen", "Druckliste"."Fortdruckbogen", "Druckliste"."Fortdruckbogen" - IFNULL( "druckmaschine_1"."Fortdruckbogen", 0 ) - IFNULL( "druckmaschine_2"."Fortdruckbogen", 0 ) AS "Noch fehlende Fortdruckbogen" FROM "Druckliste"
LEFT JOIN "druckmaschine_1" ON "druckmaschine_1"."Fortdruckbogen"="druckmaschine_1"."Fortdruckbogen"
LEFT JOIN "druckmaschine_2" ON "druckmaschine_2"."Fortdruckbogen"="druckmaschine_2"."Fortdruckbogen"
WHERE "druckmaschine_1"."Signatur" = "Druckliste"."Signatur" AND "druckmaschine_2"."Signatur" = "Druckliste"."Signatur"
Fällt dir, oder wem anderes, der Fehler auf? Ich habe jetzt ca. 2h rumprobiert....aber will nicht klappen
PS: Habe mir jetzt das Base Handbuch 5.0 bestellt. Ich hoffe, dass ich hier dann weniger nerven muss
- Dateianhänge
-
- 2304.odb
- (4.68 KiB) 105-mal heruntergeladen
Re: Werte aus Tabellen wahlweise addieren
Hallo Jan,
Nach dem ersten LEFT JOIN führst Du die 2. Tabelle ein, definierst aber nicht die Beziehung zur ersten Tabelle, sondern einfach auf sich selbst. Bei der 3. Tabelle gehst Du genau so vor.
Alle Datensätze aus "Druckliste" werden ausgegeben - ob nun Daten dazu passend in "druckmaschine_1" oder "druckmaschine_2" enthalten sind oder nicht.
---
Das Base-Handbuch gibt es übrigens auch frei als *.pdf-Datei zum Download. Ich nehme aber an, dass Du Dich bewusst für eine ausgedruckte Variante entschieden hast.
Du nervst sicher nicht. Ist doch besser, wenn hier Fragen so lange gestellt werden, bis sie hinreichend beantwortet sind, als das ganze Projekt einfach fallen zu lassen. Auch andere profitieren von Deinen Fragen ebenso wie von meinen Antworten.
Gruß
Robert
Code: Alles auswählen
... FROM "Druckliste"
LEFT JOIN "druckmaschine_1" ON "druckmaschine_1"."Fortdruckbogen"="druckmaschine_1"."Fortdruckbogen"
LEFT JOIN "druckmaschine_2" ON "druckmaschine_2"."Fortdruckbogen"="druckmaschine_2"."Fortdruckbogen"
WHERE "druckmaschine_1"."Signatur" = "Druckliste"."Signatur" AND "druckmaschine_2"."Signatur" = "Druckliste"."Signatur"
Code: Alles auswählen
... FROM "Druckliste"
LEFT JOIN "druckmaschine_1" ON "druckmaschine_1"."Signatur" = "Druckliste"."Signatur"
LEFT JOIN "druckmaschine_2" ON "druckmaschine_2"."Signatur" = "Druckliste"."Signatur"
---
Das Base-Handbuch gibt es übrigens auch frei als *.pdf-Datei zum Download. Ich nehme aber an, dass Du Dich bewusst für eine ausgedruckte Variante entschieden hast.
Du nervst sicher nicht. Ist doch besser, wenn hier Fragen so lange gestellt werden, bis sie hinreichend beantwortet sind, als das ganze Projekt einfach fallen zu lassen. Auch andere profitieren von Deinen Fragen ebenso wie von meinen Antworten.
Gruß
Robert
Re: Werte aus Tabellen wahlweise addieren
Guten Morgen Robert,
vielen,vielen Dank ! Es macht jetzt genau das was ich wollte
Einen schönen Sonntag noch und bis zum nächsten Mal
Grüße
Jan
vielen,vielen Dank ! Es macht jetzt genau das was ich wollte
Einen schönen Sonntag noch und bis zum nächsten Mal
Grüße
Jan
Re: Werte aus Tabellen wahlweise addieren
Hallo Jan,
auch wenn du jetzt eine Lösung gefunden hast, empfehle ich dir, noch einmal über den Aufbau deiner Tabellen nachzudenken.
Du hast für jede Maschine eine Tabelle.
Dies führt dazu, dass du die Abfragen nicht mehr verwenden kannst, sollte eine Maschine hinzukommen.
Es ist aber ein leichtes, statt zwei, oder besser n-Tabellen nur eine, mit einer zusätzlichen Spalte, in der die ID der Maschinen gespeichert wird zu verwenden.
Siehe Beispiel anbei. Die Tabelle heißt hier TBL_PRODUZIERT. Die jeweilige Maschine wird in die Spalte FK_ID_M per Listenfeld eingetragen. Siehe Formular F_PRODUZIERT.
Kommt einmal eine neue Maschine hinzu, brauchst du sie nur in die Tabelle TBL_MASCHINEN einzutragen, fertig.
Gruß R
auch wenn du jetzt eine Lösung gefunden hast, empfehle ich dir, noch einmal über den Aufbau deiner Tabellen nachzudenken.
Du hast für jede Maschine eine Tabelle.
Dies führt dazu, dass du die Abfragen nicht mehr verwenden kannst, sollte eine Maschine hinzukommen.
Es ist aber ein leichtes, statt zwei, oder besser n-Tabellen nur eine, mit einer zusätzlichen Spalte, in der die ID der Maschinen gespeichert wird zu verwenden.
Siehe Beispiel anbei. Die Tabelle heißt hier TBL_PRODUZIERT. Die jeweilige Maschine wird in die Spalte FK_ID_M per Listenfeld eingetragen. Siehe Formular F_PRODUZIERT.
Kommt einmal eine neue Maschine hinzu, brauchst du sie nur in die Tabelle TBL_MASCHINEN einzutragen, fertig.
Gruß R
- Dateianhänge
-
- JOBS_PRODUKTION.odb
- (16.92 KiB) 99-mal heruntergeladen
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 10: AOO, LO Linux Mint: AOO, LO