AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Problem mit Group by in Access
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Group by in Access

Ein Thema von Luckner · begonnen am 24. Mai 2019 · letzter Beitrag vom 5. Jun 2019
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Problem mit Group by in Access

  Alt 24. Mai 2019, 14:28
Die Fehlermeldung sagt es ja schon.

Jedes Feld in der Feldliste muss entweder Teil der Gruppierung oder ein Aggegat sein!

Du gruppierst über Materialrollen.Rollennummer und Rollenlager.Lagerplatz. Entweder du Weitest die Gruppierung auf Materialrollen.[Mat-Nr] aus oder Du sagst Access welche Mat-Nr der zusammengefassten Du möchtset ( die kleinste, größte, den Durschnitt, die Summe aller Nummern, ...
Markus Kinzler
  Mit Zitat antworten Zitat
Luckner

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

AW: Problem mit Group by in Access

  Alt 24. Mai 2019, 14:29
Jetzt dieses:

Delphi-Quellcode:
         Datamodule1.ADOQueryRollenJoinLagerplatzTabelle.SQL.Add('SELECT Materialrollen.[Mat-Nr], Materialrollen.Rollennummer, Materialrollen.DatumAb, Rollenlager.Lagerplatz, Rollenlager.Rollennummer FROM Materialrollen ');
         Datamodule1.ADOQueryRollenJoinLagerplatzTabelle.SQL.Add('LEFT JOIN Rollenlager ON Rollenlager.Rollennummer = Materialrollen.Rollennummer where ((Materialrollen.[Mat-Nr] = ' + EditMaterialeingangMatNr.Text + ') and (Materialrollen.DatumAb is NULL))');
         Datamodule1.ADOQueryRollenJoinLagerplatzTabelle.SQL.Add(' GROUP BY Materialrollen.[Mat-Nr], Materialrollen.Rollennummer, Rollenlager.Lagerplatz, Materialrollen.DatumAb, Rollenlager.Rollennummer');
Jetzt ohne Fehlermeldung, jedoch das Ergebnis ist gleich als ob ohne Group By wäre.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Problem mit Group by in Access

  Alt 24. Mai 2019, 14:32
Ist ja auch logisch, wenn alle Felder in der Gruppierung sind bedeutet es ja dass du aus jedem datensatz eine Gruppe machst!

Gruppieren heisst ja Zusammenfassen. Dadurch verlierst Du die Detailsinformationen der Datensätze in den Feldern über die nicht gruppiert wird. Willst Du diese Felder trotzdem haben musst Du angeben, welche Wert bzw. Aggregat Du willst.

Beispiel

Name Geschlecht Alter Größe
Max männlich 20 1,80
Susi weiblich 18 1,50
Bob männlich 35 1,70
Sonja weiblich 30 1,60

SQL-Code:
select
  sum(*) as Anzahl,
  Geschlecht, //Gruppierung
  min(Alter) as Juengste,
  max(Alter) as Älteste,
  avg( Alter) Durschnittsalter
from
  Tabelle
group by
  Geschlecht;
Markus Kinzler

Geändert von mkinzler (24. Mai 2019 um 14:43 Uhr)
  Mit Zitat antworten Zitat
Luckner

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

AW: Problem mit Group by in Access

  Alt 24. Mai 2019, 14:39
Materialrollen.[Mat-Nr] = ' + EditMaterialeingangMatNr.Text ist eindeutig. Es gibt mehrere Materialrollen, die möglicherweise auf mehrere Lagerplätzen liegen (oder auch nicht).
Möchte nur die Lagerplätze anzeigen, jedoch nur einmal pro Lagerplatze. Wie kann ich eine Aggregatfunktion aus Rollennummern bilden?

Danke, Luckner
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Problem mit Group by in Access

  Alt 24. Mai 2019, 14:45
Zitat:
Wie kann ich eine Aggregatfunktion aus Rollennummern bilden?
Das musst Du entscheiden. welche willst Du die kleinste, die größte?
Markus Kinzler
  Mit Zitat antworten Zitat
Luckner

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

AW: Problem mit Group by in Access

  Alt 24. Mai 2019, 15:04
Ich glaube, ich muss mir erst mal die Group BY Funktion noch so richtig anschauen. Möglicherweise bekomme ich dann eine Idee, wie ich das machen kann.

Danke, Luckner
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Problem mit Group by in Access

  Alt 24. Mai 2019, 15:15
Schau Dir doch nochmal mein Beispiel oben an:

Wenn man wie oben nach Geschlecht gruppiert, erhält man einen Datensatz pro Geschlecht, alle anderen Felder der Abfrage müssen also als Aggegat vorliegen, selbst wenn zufällig alle Felder der zusammenfassenden Datensätze gleich wären.
Im Beispiel oben sind es jeweils 2 Datensätze welche zusammengefasst werden, es könnten aber auch mehr sein.
Beim Geschlecht gibt es ja bekanntlich nur 2 (bzw. 3) egal wieviele Personen in der Tabelle gespeichert sind erhält man immer 2 bzw. 3 Datensätze.
Im Beispiel oben werden für die Ausprägung "weiblich" des Feldes Geschlecht Susi und Sonja zusammengefasst. Für die Felder ausser Geschlecht muss deshalb entschieden werden welche/s Aggegat man möchte.
Ich habe mich beim Beispiel mal auf das Feld Alter beschränkt und jeweils den kleinsten(MIN), den größten (MAX) und den Durschnittswert(AVG) verwendet.
Wenn die Personen zusammen Aufzugfahren könnte auch die Summe der Gewichte interessant sein (Maximalgewicht des Aufzuges).
Markus Kinzler
  Mit Zitat antworten Zitat
Luckner

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

AW: Problem mit Group by in Access

  Alt 24. Mai 2019, 17:11
Werde ich mache. Wobei ich mich frage,warum ich da irgendwelche Summen oder andere Aggregatzustände aus willkürlichen Materialnummern oder Rollennummern erzeugen soll. Aber ich werde anhand dieses Beispiels versuchen diese Funktion zu verstehen.

Danke.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: Problem mit Group by in Access

  Alt 24. Mai 2019, 17:14
Wenn Du die Felder nicht benötigst einfach weglassen oder Dummies verwenden:

SQL-Code:
select
  0 as Rollennummer, ...
Markus Kinzler
  Mit Zitat antworten Zitat
Luckner

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

AW: Problem mit Group by in Access

  Alt 24. Mai 2019, 17:49
Ich glaube, die benötige ich zum Teil. Meine 1. Tabelle besteht aus folgenden Spalten: Materialrollen.[Mat-Nr], Materialrollen.Rollennummer, Materialrollen.DatumAb und die 2. Tabelle aus: Rollenlager.Rollennummer, Rollenlager.Lagerplatz. In der 2. Tabelle existieren die Datensätze nur, wenn die entsprechende Rollenlager.Rollennummer auf einem Lagerplatz liegt. Wenn sie verbraucht wir, dann wird dieser Datensatz gelöscht. Materialrollen.[Mat-Nr] und Materialrollen.DatumAb brauche ich, wegen des selects auch.

Gruß, Luckner
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


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 21:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz