AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Materialbestand berechnen

Ein Thema von Luckner · begonnen am 3. Feb 2022 · letzter Beitrag vom 17. Feb 2022
Antwort Antwort
Delphi.Narium

Registriert seit: 27. Nov 2017
2.599 Beiträge
 
Delphi 7 Professional
 
#1

AW: Materialbestand berechnen

  Alt 4. Feb 2022, 10:58
Habe es gerade nochmal an 'ner eigene DB ausprobiert.

Es kann sein, dass man die Zeile Query.SQL.Add('order by b.rollennr, b.materialnr'); bei Access weglassen muss. Das ist aber kein Beinbruch, dann macht man das Order by halt erst bei der Abfrage per select * from v_quadratmeter order by rollennr, materialnr
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Materialbestand berechnen

  Alt 6. Feb 2022, 14:41
Hallo Delphi.Narium

Code:
Query.SQL.Add('left join materialrollen b on (b.rollennr = a.rollennr) and (b.materialnr = a.materialnr)');
Die Zeile kann ich so nicht richtig nachvolziehen, denn in der Tabelle a (Rollenlager) gibt es nicht das Feld materialnr.

In meiner Abfrage (jetzt mit den original Bezeichnungen) habe die die Abfrage so eingetragen.
Code:
SELECT Materialrollen.Rollennummer, Materialrollen.[Mat-Nr], SUM(Materialrollen.[Arb-Breite] *  Materialrollen.lfm) as quadratmeter
FROM Materialrollen LEFT JOIN Rollenlager ON (Materialrollen.Rollennummer = Rollenlager.Rollennummer)
noch ohne GROUP BY usw. und bekomme jetzt einhen Fehler, den ich nicht verstehe:

"Sie wollten eine Abfrage ausführen, die den angegebenen Ausdruck 'Rollennummer' nicht als Teil einer Aggregatfunktion einschließt"

Wenn ich jedoch
Code:
, SUM(Materialrollen.[Arb-Breite] *  Materialrollen.lfm) as quadratmeter
weglasse, dann kann ich die Funktion aufrufen. Also ist an der Summen-Funktion etwas faul. Bitte um Hilfe.

Gruß, Luckner
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.599 Beiträge
 
Delphi 7 Professional
 
#3

AW: Materialbestand berechnen

  Alt 6. Feb 2022, 14:56
Zitat:
"Sie wollten eine Abfrage ausführen, die den angegebenen Ausdruck 'Rollennummer' nicht als Teil einer Aggregatfunktion einschließt"
heißt nichts weiter, als dass das Group By fehlt.

Aggregatfunktionen, wie Sum, Count, ..., die zusätzlich zu nicht aggregierten Spalten in einem SQL vorkommen, funktionieren nur dann, wenn alle Spalten, die nicht aggregiert werden, im Group By enthalten sind.
SQL-Code:
SELECT
  Materialrollen.Rollennummer, -- nicht aggregiert
  Materialrollen.[Mat-Nr], -- nicht aggregiert
  SUM(Materialrollen.[Arb-Breite] * Materialrollen.lfm) as quadratmeter -- aggregiert
FROM Materialrollen
LEFT JOIN Rollenlager
ON (Materialrollen.Rollennummer = Rollenlager.Rollennummer)
group by
  Materialrollen.Rollennummer, -- muss, da nicht aggregiert, ins Group By
  Materialrollen.[Mat-Nr] -- muss, da nicht aggregiert, ins Group By
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Materialbestand berechnen

  Alt 6. Feb 2022, 15:19
Vielen Dank Delphi.Narium,

hatte nicht gedacht, dass am Sonntag irgend Jemand im Forum aktiv ist. Vielen Dank. Werde mir die JOIN-Verbindungen und entsprechende Kriterien unbedingt reinziehen.

Gruß, Luckner
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Materialbestand berechnen

  Alt 6. Feb 2022, 15:56
Code:
  Datamodule1.ADOQueryMaterialGesamt.Active := False;
  Datamodule1.ADOQueryMaterialGesamt.SQL.Clear;
  Datamodule1.ADOQueryMaterialGesamt.SQL.Add('SELECT Materialrollen.Rollennummer, Materialrollen.[Mat-Nr], SUM((Materialrollen.[Arb-Breite]/1000) * Materialrollen.lfm) as quadratmeter');
  Datamodule1.ADOQueryMaterialGesamt.SQL.Add(' from Rollenlager');
  Datamodule1.ADOQueryMaterialGesamt.SQL.Add(' LEFT JOIN Materialrollen ON (Materialrollen.Rollennummer = Rollenlager.Rollennummer)');
  Datamodule1.ADOQueryMaterialGesamt.SQL.Add(' GROUP BY Materialrollen.[Mat-Nr], Materialrollen.Rollennummer');
  Datamodule1.ADOQueryMaterialGesamt.SQL.Add(' ORDER BY Materialrollen.[Mat-Nr]');

  Datamodule1.ADOQueryMaterialGesamt.Open;
Jetzt bekommen ich in der Tabelle jede Rolle mit der berechneten Fläche angezeigt. D.h. für ein Material mit 10 Rollen, wird diese Angabe 10-mal in der Tabelle angezeigt. Kann ich die jetzt pro Materialrollen.[Mat-Nr] addieren zu einer Summe?

Danke, Luckner
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.599 Beiträge
 
Delphi 7 Professional
 
#6

AW: Materialbestand berechnen

  Alt 6. Feb 2022, 17:05
Ja, indem Du die Spalte Materialrollen.Rollennummer in der Auswahl (hinter dem Select) und im Group By weglässt.
SQL-Code:
SELECT Materialrollen.[Mat-Nr], SUM((Materialrollen.[Arb-Breite]/1000) * Materialrollen.lfm) as quadratmeter
from Rollenlager
LEFT JOIN Materialrollen ON (Materialrollen.Rollennummer = Rollenlager.Rollennummer)
GROUP BY Materialrollen.[Mat-Nr]
ORDER BY Materialrollen.[Mat-Nr]
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Materialbestand berechnen

  Alt 8. Feb 2022, 14:21
Hallo Delphi.Narium,

vielen Dank. Es hat mich wirklich weitergebracht. Jetzt werde ich mich mit den Join's beschäftigen, weil so richtig habe ich die Funktionsweise eines Join's nicht verstanden. Aber es es gibt im Netz so einige Beispiele und die werde ich mir reinziehen.

Gruß, Luckner
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz