Neuigkeiten:

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

Mobiles Hauptmenü

Prozentanteil in gleicher Tabelle berechnen - Nur Gesamtzahl möglich?

Begonnen von premutoz, Juni 02, 2014, 10:26:48

⏪ vorheriges - nächstes ⏩

premutoz

Hallo!

Ich benutze Access 2013 64 Bit.

In dieser Tabelle soll der Anteil der Kategorien berechnet werden:



Wie man sieht, benutze ich dafür die Spalte "GesamtAnzahl" um den Prozentwert von "Anteil" zu berechnen.
Allerdings möchte ich nicht die Gesamtzahl über ALLE Probenahmen (die hier in der Spalte "Beschreibung" repräsentiert werden), sondern über die einzelnen Probenahmen.
So soll eben beispielsweise NP Hochharz die Gesamtzahl 5 haben oder Warndt eben 15. Dies dient dazu, damit ich den Anteil jeder vorkommenden Kategorie pro Probenahme berechnen kann.

Hoffe das Problem ist halbwegs verständlich geschildert....
Mittels WHERE Klausel in der ich sage die Anzahl soll da berechnet werden wo die PN.ID gleich ist, bewirkt das was ich nun auch habe.

Hier der SQL Code falls das weiterhelfen sollte....


SELECT PNG.Beschreibung, Pflanzen.Kategorie, Count(Pflanzen.Kategorie) AS AnzahlvonKategorie,

(Select COUNT(Pflanzen.Kategorie)
FROM Pflanzen INNER JOIN ((PNG INNER JOIN (Probenahme INNER JOIN (Äsungsfläche INNER JOIN Teilfläche ON Äsungsfläche.AF_ID = Teilfläche.Äsungsfläche_ID)
ON Probenahme.PN_ID = Äsungsfläche.Probenahme_ID)
ON PNG.PNG_ID = Probenahme.Gebiet)
INNER JOIN Vorkommen ON Teilfläche.TF_ID = Vorkommen.TeilFläche_ID)
ON Pflanzen.ID = Vorkommen.Pflanze_ID  ) AS GesamtAnzahl,

Format(Round(AnzahlvonKategorie/GesamtAnzahl,2),'Percent') AS Anteil

FROM Pflanzen INNER JOIN ((PNG INNER JOIN (Probenahme INNER JOIN (Äsungsfläche INNER JOIN Teilfläche ON Äsungsfläche.AF_ID = Teilfläche.Äsungsfläche_ID) ON Probenahme.PN_ID = Äsungsfläche.Probenahme_ID) ON PNG.PNG_ID = Probenahme.Gebiet) INNER JOIN Vorkommen ON Teilfläche.TF_ID = Vorkommen.TeilFläche_ID) ON Pflanzen.ID = Vorkommen.Pflanze_ID

GROUP BY PNG.Beschreibung, Pflanzen.Kategorie;



Zum Verständnis noch die Beziehungen der Tabellen:

MaggieMay

Hallo,

du brauchst ein Kriterium in der Unterabfrage, um die Ermittlung der Anzahl auf das aktuelle Gebiet einschränken zu können.
So könnte das aussehen:(Select COUNT(Pflanzen.Kategorie)
FROM Pflanzen INNER JOIN (([color=blue]PNG AS P[/color] INNER JOIN (Probenahme INNER JOIN (Äsungsfläche INNER JOIN Teilfläche ON Äsungsfläche.AF_ID = Teilfläche.Äsungsfläche_ID)
ON Probenahme.PN_ID = Äsungsfläche.Probenahme_ID)
ON [color=blue]P.PNG_ID[/color] = Probenahme.Gebiet)
INNER JOIN Vorkommen ON Teilfläche.TF_ID = Vorkommen.TeilFläche_ID)
ON Pflanzen.ID = Vorkommen.Pflanze_ID 
[color=blue]WHERE P.PNG_ID = PNG.PNG_ID[/color]) AS GesamtAnzahl,
Freundliche Grüße
MaggieMay

premutoz

Hi!
Danke für die Antwort.
Leider sagt er mir wenn ich das versuche:

"Syntax Fehler in der UNION Abfrage"

EDIT:
Hat sich erledigt es funktioniert tatsächlich :D
Vielen Vielen Dank! Hab eeeewig rumprobiert :)