Werte aus Tabellen wahlweise addieren

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Werte aus Tabellen wahlweise addieren

Beitrag von RobertG »

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
Jacko7350
*
Beiträge: 15
Registriert: Mi, 17.02.2016 11:04

Re: Werte aus Tabellen wahlweise addieren

Beitrag von Jacko7350 »

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 !
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Werte aus Tabellen wahlweise addieren

Beitrag von RobertG »

Hallo Jan,

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"
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
Jacko7350
*
Beiträge: 15
Registriert: Mi, 17.02.2016 11:04

Re: Werte aus Tabellen wahlweise addieren

Beitrag von Jacko7350 »

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.
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
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Werte aus Tabellen wahlweise addieren

Beitrag von RobertG »

Hallo Jan,

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"
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.

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"
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
Jacko7350
*
Beiträge: 15
Registriert: Mi, 17.02.2016 11:04

Re: Werte aus Tabellen wahlweise addieren

Beitrag von Jacko7350 »

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 :D

Grüße

Jan
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Werte aus Tabellen wahlweise addieren

Beitrag von F3K Total »

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
Dateianhänge
JOBS_PRODUKTION.odb
(16.92 KiB) 99-mal heruntergeladen
Antworten