Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Aggregatfunktion SQL

Empfohlene Antworten

Veröffentlicht

Hallo zusammen,

momentan sitz ich im wahrsten Sinne des Wortes auf dem Schlauch. Ich muss eine (eigentlich einfache?) SQL Abfrage schreiben, aber es fehlt der entscheidende Tipp :floet:

Hier mal die Aufgabe:

"Ermitteln Sie den Bestandswert (Ausdruck: Einzelpreis * Lagerbestand) je Lieferant. Die Lieferanten mit den Nummern 1, 2 und 3 sollen nicht berücksichtigt werden. Ebenso sollen alle Auslaufartikel unberücksichtigt bleiben. Tabelle Artikel"

Hier mein Lösungsansatz:

SELECT A.Lieferanten_Nr, (A.Einzelpreis * A.Lagerbestand) AS Bestandswert

FROM Artikel AS A

WHERE A.Lieferanten_Nr NOT IN (1,2,3);

Soweit so gut. Dummerweise wird momentan noch teilweise ein Lieferant x mal ausgegeben und jedesmal mit unterschiedlichen Bestandswerten, Irgendwie müsste ich doch in die Abfrage noch ein GROUP BY und/oder HAVING reinfrickeln, oder?

Btw: Auslaufartikel werden als Ja/Nein Feld gespeichert.

Anbei eine Übersicht über die Datenbank-Beziehungen (vielleicht hilfts?)

beziehungen.jpg

Vielen Dank für alle erbrachten Mühen :)

Irgendwie müsste ich doch in die Abfrage noch ein GROUP BY und/oder HAVING reinfrickeln, oder?

GROUP BY ist richtig. und was gruppierst du? ja richtig, steht in der frage ...

Bestandswert JE LIEFERANT...

reicht das als tipp? ^^

Hallo,

erstmal danke für den Tipp, aber so richtig weiter bin ich leider immer noch nicht :hells:

Hänge ich an das, was ich momentan habe, ein GROUP BY dran, spuckt mir Access eine Fehlermeldung aus, mit der ich nicht wirklich was anfangen kann, bzw nicht weiß wie man das lösen kann ^^

SELECT A.Lieferanten_Nr, (A.Einzelpreis * A.Lagerbestand) AS Bestandswert

FROM Artikel AS A

WHERE A.Lieferanten_Nr NOT IN (1,2,3)

GROUP BY A.Lieferanten_Nr;

Dann kommt folgende Fehlermeldung:

"Sie wollten eine Abfrage ausführen, die den angegebenen Ausdruck 'A.Einzelpreis*A.Lagerbestand' nicht als Teil der Aggregatfunktion einschließt."

:upps Sowas nennt man wohl Brainlag ^^

dir fehlt etwas wichtiges.

der bestandswert ist doch die SUMME von lagerbestand * preis aller artikel.

Acess will alle spalten die nicht teil des aggregats sind in der GROUP BY klausel haben. da du gar keine aggregatfunktion benutzt kommt die meldung.


SELECT A.Lieferanten_Nr, [COLOR="Red"]SUM[/COLOR](A.Einzelpreis * A.Lagerbestand) AS Bestandswert

FROM Artikel AS A

WHERE A.Lieferanten_Nr NOT IN (1,2,3)

GROUP BY A.Lieferanten_Nr;

wie du die auslaufartikel ausschließt sollte ja nicht so problematisch sein

Jup, habs jetzt hinbekommen. Vielen Dank !

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.