Hallo!
Ich benutze Access 2013 64 Bit.
In dieser Tabelle soll der Anteil der Kategorien berechnet werden:
(http://i.imgur.com/cn5W9c1.jpg)
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:
(http://i.imgur.com/pgUJVGD.jpg)
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,
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 :)