Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Zwei Summen in einer Abfrage

Begonnen von Josef, März 16, 2012, 10:11:04

⏪ vorheriges - nächstes ⏩

Josef

Hallo zusammen,

ich habe folgendes Problem:

In einer Tabelle sind Artikel erfasst.
A ist 10 mal vorhanden
B ist 15 mal vorhanden
C ist 5 mal vorhanden
D ist 50 mal vorhanden


Z=A+B+C
In einer Abfrage möchte ich gleichzeitig die Anzahl D und Z ermitteln
D=50
Z=30

Einzeln ist es kein Problem. Das mache ich mit den Funktionen,,Gruppierung" und ,,Anzahl" und ,,Bedingung". Geht es auch in einer Abfrage?

Vielen Dank und einen sonnigen Tag
Josef

ebs17

... wenn es ein Gruppierungsmerkmal gibt, das A und B und C gemeinsam erfasst, dann ja.

MfGA
ebs
Mit freundlichem Glück Auf!

Eberhard

Josef

Ich versuche meine Frage mal mit Bildern zu verdeutlichen.

Ich habe folgende Tabelle:


Wenn ich die Anzahl der Artikel A, B oder C ermitteln will, mache ich diese Abfrage:


und erhalte dieses Ergebnis:


Soweit so gut. Ich möchte aber in derselben Abfrage auch noch die Anzahl der Artikel von D ermitteln (sind hier im Beispiel 4). Ist das möglich?

Vielen Dank für eure Mühe!
Josef

DF6GL

Hallo,


nein, Du hast keine Einteilung (Gruppierung) der Artikel in der Tabelle...

Mindestens:
tblArtikel

Artikel Artikelgruppe
a          gr1
b          gr1
c           gr1
d          gr2
d          gr2
d          gr2
d          gr2


select count(*) from tblArtikel  group by Artikelgruppe


"aber in derselben Abfrage" 

wenn das aber nicht unbedingt heißt: " in einer einzigen Abrfrage", dann könntest Du zwei Abfragen erstellen und  beide mit einer Union-Abfrage (---> "dieselbe Abfrage") zusammenführen.


Select Count(*) As ArtikelAnzahl  from tblArtikel where Artikel = "a" or Artikel ="b" or Artikel = "c"
Union
Select Count(*) as ArtikelAnzahl from tblArtikel where Artikel = "d"




Vielleicht solltest Du die eigentliche Aufgabe und die vorhandenen Daten ausführlicher schildern, damit man konkretere Vorschläge machen kann.



Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Josef

Hallo DF6GL,

das war genau das, was ich gesucht habe:
Select Count(*) As ArtikelAnzahl  from tblArtikel where Artikel = "a" or Artikel ="b" or Artikel = "c"
Union
Select Count(*) as ArtikelAnzahl from tblArtikel where Artikel = "d"


Ich habe noch nie eine SQL-Abfrage gemacht. Du hast mich da echt weitergebracht.
Vielen Dank für Deine Hilfe
Josef

Josef

Eine Frage hab ich noch
Es kommt immer dies raus:


Egal ob ich
SELECT Count(tbl_Artikel.Artikel) AS AnzahlvonArtikel
FROM tbl_Artikel
WHERE (((tbl_Artikel.Artikel)="a" Or (tbl_Artikel.Artikel)="b" Or (tbl_Artikel.Artikel)="c"))
UNION
SELECT Count(tbl_Artikel.Artikel) AS AnzahlvonArtikel
FROM tbl_Artikel
WHERE (((tbl_Artikel.Artikel)="d"));

oder

SELECT Count(tbl_Artikel.Artikel) AS AnzahlvonArtikel
FROM tbl_Artikel
WHERE (((tbl_Artikel.Artikel)="d"))
UNION
SELECT Count(tbl_Artikel.Artikel) AS AnzahlvonArtikel
FROM tbl_Artikel
WHERE (((tbl_Artikel.Artikel)="a" Or (tbl_Artikel.Artikel)="b" Or (tbl_Artikel.Artikel)="c"));

eingebe.

Bei der zweiten Abfrage sollte doch umgekehrte Reihenfolge 4, dann 3 rauskommen. Woran liegt das?

DF6GL

Hallo,

"Sortieren" (das hier ist eigentlich keine Sortierung) ist so eine Sache bei Union-Abfragen....

Wenn Du eine Info haben willst, die die Zuordnung zu den Artikeln klarlegt, dann etwa so:



SELECT "a,b,c" as Artikel, Count(tbl_Artikel.Artikel) AS AnzahlvonArtikel
FROM tbl_Artikel
WHERE (((tbl_Artikel.Artikel)="a" Or (tbl_Artikel.Artikel)="b" Or (tbl_Artikel.Artikel)="c")) order by  Artikel
UNION
SELECT "d" as Artikelm, Count(tbl_Artikel.Artikel) AS AnzahlvonArtikel
FROM tbl_Artikel
WHERE (((tbl_Artikel.Artikel)="d"));

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Josef

SUPER  :)
Jetzt hab ich alles was ich brauche. Ich musste allerdings die Abfrage etwas umformen, da ich eine Fehlermeldung bekam.

SELECT "a,b,c" as Artikelm, Count(tbl_Artikel.Artikel) AS AnzahlvonArtikel
FROM tbl_Artikel
WHERE (((tbl_Artikel.Artikel)="a" Or (tbl_Artikel.Artikel)="b" Or (tbl_Artikel.Artikel)="c"))
UNION SELECT "d" as Artikelm, Count(tbl_Artikel.Artikel) AS AnzahlvonArtikel
FROM tbl_Artikel
WHERE (((tbl_Artikel.Artikel)="d"));


Du hast mir sehr geholfen!
Josef