Access-o-Mania

Access-Forum => Tabelle/Abfrage => Thema gestartet von: BananaDealer am Dezember 05, 2017, 10:40:30

Titel: Anzahl summiert aus zwei Spalten
Beitrag von: BananaDealer am Dezember 05, 2017, 10:40:30
Hallo Leute,

ich habe folgende Problematik:

In einer Datentabelle sind den Datensätzen unter vielen anderen auch zwei Spalten mit Eigenschaft 1 und Eigenschaft 2 zugeordnet. Diese beziehen ihre möglichen Werte aus dem selben Pool, nur kann halt einem Datensatz bis zu zwei Eigenschaften zugeordnet werden.

Mit einer Abfrage sollen diese Eigenschaften nun ausgezählt werden und bestenfalls noch nach einer dritten Spalte sortiert werden.

Also genauer: Access soll die Anzahl der Eigenschaften aus beiden Spalten auszählen, ohne zu schauen, ob Werte gleich sind oder eine Beziehung haben (Sprich so auszählen, als ob es aus einer Spalte wäre.) Gruppiere diese Summen und Eigenschaften nach verschiedenen Standorten.

Beispiel:
Standort       Eigenschaft 1          Eigenschaft 2
A                  grün                       blau
B                  gelb                       grün
A                  blau                       grün
C                  rot                         gelb
C                  grün                       rot

Ergebnis:

       grün     blau     gelb     rot
A       2           2          0       0

B       1           0          1       0

C       1           0           1       2

Ich hoffe alles, ist verständlich :D Am besten wäre, alles ohne Code zu machen, sofern möglich.

Vielen Dank und beste Grüße

BananaDealer
Titel: Re: Anzahl summiert aus zwei Spalten
Beitrag von: MzKlMu am Dezember 05, 2017, 11:26:48
Hallo,
die beste Lösung wäre die Tabelle umzubauen (normalisiert). So sollte das aussehen:
Standort       Eigenschaft 
A                  grün                       
A                  blau
B                  gelb                       
B                  grün
A                  blau                       
A                  grün
C                  rot                         
C                  gelb
C                  grün                       
C                  rot

Das wäre dann der für eine Datenbank korrekte Aufbau.
Dann wäre Dein Vorhaben ein Kinderspiel und die gewünschte Darstellung lässt sich über eine Kreuztabellenabfrage erreichen. Ohne VBA Code.

PS:
Diese erfundenen abstrakten Beispiele gehen meist an der Realität vorbei und erfordern oft mehr Rückfragen, weil dann nach auf dem Beispiel beruhenden Vorschlägen ein Ja, aber .... kommt.
Titel: Re: Anzahl summiert aus zwei Spalten
Beitrag von: BananaDealer am Dezember 05, 2017, 11:35:22
Hallo Klaus,

leider ist dies nicht möglich. Es wird eine Datentabelle aus Excel importiert, die unter ca. zehn anderen die besagten zwei Spalten besitzt. Diese zwei Spalten zeichnen bis zu zwei verschiedene Eigenschaften (genauer sind es Fehlerschwerpunkte, aber eigentlich unerheblich) aus, welche nicht zu einer Spalte zusammengefasst werden können. Diese beiden Spalten werden aber aus ein und derselben Background Tabelle gefüttert (diese ist eine andere Datei und verknüpft; quasi eine Basistabelle mit allen möglichen Fehlerschwerpunkten) und besitzen den gleichen Pool an möglichen Werten. Nun soll eine Abfrage durch diese beide Spalten gehen und die Anzahl der Fehlerschwerpunkte gruppiert ausgeben.

Ich hoffe, das macht es deutlicher.
Titel: Re: Anzahl summiert aus zwei Spalten
Beitrag von: MzKlMu am Dezember 05, 2017, 11:38:51
Hallo,
der gezeigte Aufbau muss für Dein Vorhaben sein. Access erfordert einen normalisierten Aufbau der Tabelle. Verlinke die Exceltabelle und importiere die Daten mit 2 Anfügeabfragen in die vorgefertigte Accesstabelle obiger Struktur.

Die Alternative wäre mit einer Unionabfrage diese Struktur zu erzeugen und auf die Union dann die Kreuztabellenabfrage aufzubauen. Aber das halte ich für noch aufwendiger.

Wahrscheinlich ist aber noch mehr Aufwand notwendig, denn die verbleibenden restlichen 8 Felder müssen auch noch mindestens in eine weitere Tabelle überführt werden.
Titel: Re: Anzahl summiert aus zwei Spalten
Beitrag von: BananaDealer am Dezember 05, 2017, 11:44:46
Hallo,
das Problem ist, dass pro Datensatz eine Vorgangsnummer vergeben wurde. Diesem Vorgang können, sofern er fehlerhaft war, bis zu zwei Fehlerpunkte zugeordnet werden. Bspw. eine falsche Adressierung und eine zu späte Bearbeitung. Beide Fehler werden separat eingetragen (in die zwei Spalten). Normalisiert man die Tabelle nach deiner Idee, hätte ich für diesen Vorgang zwei Datensätze, welche sich nur in den Fehlerpunkten unterscheiden. Für den logischen Aufbau im System ist aber nur ein Datensatz pro Vorgang zwingend notwendig.

Gibt es da keine Möglichkeit? Ich habe irgendwas mit dem UNION Befehl im Hinterkopf. Leider ist diesbezüglich alles nur sehr wage.

Danke und Grüße
Titel: Re: Anzahl summiert aus zwei Spalten
Beitrag von: MzKlMu am Dezember 05, 2017, 11:53:39
Hallo,
UNION hatte ich ja schon erwähnt, aber auch dann entstehen 2 Datensätze für je Vorgang.

Zitat
Für den logischen Aufbau im System ist aber nur ein Datensatz pro Vorgang zwingend notwendig.
Das ist ein Trugschluss. In der erwähnten Kreuztabelle siehst Du nur einen Vorgang.

Übrigens, wie ich es bereits angedeutet habe wird auch für den eigentlichen Vorgang eine Tabelle benötigt.

Du darfst Access nicht mit Excel vergleichen. Access erfordert einen völlig anderen Aufbau der Tabellen. Man in den seltensten Fällen eine Exceltabelle direkt in Access verwenden.


Titel: Re: Anzahl summiert aus zwei Spalten
Beitrag von: BananaDealer am Dezember 05, 2017, 12:01:48
Vielen Dank schon einmal für deine Mühe!
Der Aufbau der Tabelle ist für Access leider wirklich unpraktisch. Nur leider kann ich an diesem wirklich nichts ändern. Der selbe Vorgang darf nicht als doppelter Datensatz eingetragen werden, sonst meckert das System an anderer Stelle.

Hättest du eine Idee, wie ich eine einfache Union-Abfrage mache, in der mir nur die Fehlerpunkte und Anzahl ausgegeben wird, ausgelesen aus den beiden Spalten?
Titel: Re: Anzahl summiert aus zwei Spalten
Beitrag von: MzKlMu am Dezember 05, 2017, 12:07:01
Hallo,
die Union macht auch diese doppelten Vorgänge.
Aber das spielt doch keine Rolle. Du brauchst doch diese Tabelle nur für die Auswertung.

Zitat
sonst meckert das System an anderer Stelle
welches System ist das, das da meckert ?
Titel: Re: Anzahl summiert aus zwei Spalten
Beitrag von: Lachtaube am Dezember 05, 2017, 12:16:25
Hier ist ein funktionierender Fiddle (http://dbfiddle.uk/?rdbms=sqlite_3.8&fiddle=49ca8b94ed97bf1ea1ca1b9545615385).

PS: Es mag sein, dass Access keine Kreuztabellenabfrage basierend auf einer Vereinigungsabfrage mag. Dann muß man halt das Ergebnis der Vereinigungsabfrage zwischenspeichern (z. Bsp. als Text exportieren und verknüpfen).
Titel: Re: Anzahl summiert aus zwei Spalten
Beitrag von: BananaDealer am Dezember 05, 2017, 12:19:35
Kann ich in SQL nicht festlegen, zähle die Werte über zwei Spalten? Dann müsste ich auch keinen Abfragen über UNION machen. In Excel-VBA wäre dass dann einfach quasi Zählen in Range Spalte A bis Spalte B. Das muss doch in Access auch gehen.

Das Problem ist die Weiterbearbeitung der Daten. Sind mehrere Datensätze mit gleichem Datum und Vorgangsnummer, müssen alle bis auf einer davon rausfliegen (Thema Redundanz und Verifizierbarkeit von Stichproben; sind auf Basis von Vorgängen und nicht auf Basis der Fehler). Dabei würde dann der eine Fehlerschwerpunkt verloren gehen. Man könnte natürlich eine Rückführung der Fehler in einen Datensatz anstreben. Weniger Arbeit hat man dann im Endeffekt aber auch nicht.
Titel: Re: Anzahl summiert aus zwei Spalten
Beitrag von: BananaDealer am Dezember 05, 2017, 12:22:44
Hier ist ein funktionierender Fiddle (http://dbfiddle.uk/?rdbms=sqlite_3.8&fiddle=49ca8b94ed97bf1ea1ca1b9545615385).

PS: Es mag sein, dass Access keine Kreuztabellenabfrage basierend auf einer Vereinigungsabfrage mag. Dann muß man halt das Ergebnis der Vereinigungsabfrage zwischenspeichern (z. Bsp. als Text exportieren und verknüpfen).

Danke für diese Idee! Ich werde mal schauen, ob es umsetzbar ist. Das Beispiel aus dem Thread ist natürlich deutlich abgespeckt. Eigenschaften gibt es um die 50 und "Standorte" sind stellvertretend für 10 verschiedene Möglichkeiten die wieder 3 Mal unterteilt werden können, also 30.
Titel: Re: Anzahl summiert aus zwei Spalten
Beitrag von: MzKlMu am Dezember 05, 2017, 12:31:01
Hallo,
Zitat
Das Beispiel aus dem Thread ist natürlich deutlich abgespeckt. Eigenschaften gibt es um die 50 und "Standorte" sind stellvertretend für 10 verschiedene Möglichkeiten die wieder 3 Mal unterteilt werden können, also 30.
Habe ich es nicht gesagt, völlig sinnloses Beispiel, das an der Realität vorbei geht.
Ich darf mich zitieren:
Zitat
Diese erfundenen abstrakten Beispiele gehen meist an der Realität vorbei und erfordern oft mehr Rückfragen, weil dann nach auf dem Beispiel beruhenden Vorschlägen ein Ja, aber .... kommt.
Hier wirst Du um eine gründliche Umstrukturierung nach den Regeln der Normalisierung nicht herumkommen.
Titel: Re: Anzahl summiert aus zwei Spalten
Beitrag von: BananaDealer am Dezember 05, 2017, 12:35:08
Ich wollte mit diesem Beispiel nur mein Ziel der Abfrage verdeutlichen und nicht die eigentliche Datenbankstruktur der Realität zeigen. Grund dafür war, dass ich in dem Glauben war, unabhängig von der Struktur, eine einfache Abfrage des Zählens über nicht eine, sondern zwei Spalten erwirken zu können. Etwas blauäugig ::)
Titel: Re: Anzahl summiert aus zwei Spalten
Beitrag von: Lachtaube am Dezember 05, 2017, 12:38:45
Du hast Murks in der Datenbank vorliegen. Wenn mein richtiges und wichtiges Excel-Sheet in Stein gemeißelt ist, heißt das nicht, dass ich auch in der selben Datenform in Access mit einem Import des Selben arbeiten muss. Ohne Normalisierung wird die Datenbank keinen Spaß machen (auch in Hinsicht bzgl. Ablaufgeschwindigkeiten). Soll nach erfolgter Datenver- oder Datenbearbeitung in der DB wieder etwas in das Excel-Sheet zurückfließen, lässt sich jederzeit die Ursprungsform wieder herstellen.

PS: meine bisherigen, aber schon etwas länger zurückliegenden Versuche mit Vereinigungsabfragen haben gezeigt, dass bei etwas weniger als 50 Vereinigungen in einer Abfrage Schluß war. D.h., dass Du ggf. mehrstufig die Eigenschaften zusammenführen musst.
Titel: Re: Anzahl summiert aus zwei Spalten
Beitrag von: MzKlMu am Dezember 05, 2017, 13:45:18
Hallo,
Zitat
Etwas blauäugig
etwas blauäugig ist gut. Das war wissentlich falsch. Mehrfach(!) behaupten es wären nur 2 Spalten und am Schluss sind es um die 50 und das auch noch in Gruppen, was ist da noch realitätsbezogen?
Um das mit Access als Kreuztabellenabfrage darstellen zu können, braucht es eine Tabelle mit 50*10*3=1500 Datensätzen.
Titel: Re: Anzahl summiert aus zwei Spalten
Beitrag von: BananaDealer am Dezember 05, 2017, 14:24:04
Die Anderen Spalten können aber vernachlässigt werden. So gesehen könnte ich auch nur die beiden Eigenschaften-Spalten in eine neue Tabelle speichern und diese dann auswerten. Ich zähle nur innerhalb einer Tabelle, wo alle Datensätze drin sind. Nehme also keine weiteren Beziehungen in Anspruch. Es soll nur rein ausgezählt werden aus den zwei Spalten.

Ich habe aber auch nun kein tiefergehendes Wissen und habe zu einfach gedacht bezüglich des Auszählens.
Titel: Re: Anzahl summiert aus zwei Spalten
Beitrag von: MzKlMu am Dezember 05, 2017, 14:34:18
Hallo,
dann passt doch der Vorschlag von Lachtaube mit der Union. Es werden aber auch dann 2 DS je Vorgang erzeugt.
Titel: Re: Anzahl summiert aus zwei Spalten
Beitrag von: BananaDealer am Dezember 05, 2017, 14:53:41
Hallo,

das mit der Union-Abfrage probiere ich gerade, nur stehe ich da noch etwas auf dem Schlauch :-\
Das Beispiel mit Fiddle ist immer abhängig von den Werten der Tabelle? Weil diese ja immer anders sind und ich nicht manuell arbeiten kann. Ich habe nun überlegt so vorzugehen, dass ich erst eine Auszähl-Abfrage für Spalte 1 (Abfrage 1) bzw. Spalte 2 (Abfrage 2) mache und dann nochmal für beide zusammen (Abfrage 3), dass alle gleichen Eigenschaften aus Abfrage 1 und Abfrage 2 verglichen und summiert werden. Dann müsste man noch alle Datensätze aus Abfrage 1 und Abfrage 2 dazu nehmen, die nicht in Abfrage 3 vorkommen. Nur tue ich mich noch an der richtigen Ausführung schwer.
Titel: Re: Anzahl summiert aus zwei Spalten
Beitrag von: Lachtaube am Dezember 05, 2017, 15:01:39
Im Fiddle steht aber doch auch, dass Du den Kreuztabellenabfrageassistenten einsetzen sollst.

PS: dass die View einer gespeicherten Auswahlabfrage entspricht, ist Dir klar?
Titel: Re: Anzahl summiert aus zwei Spalten
Beitrag von: BananaDealer am Dezember 11, 2017, 14:29:21
Im Fiddle steht aber doch auch, dass Du den Kreuztabellenabfrageassistenten einsetzen sollst.

PS: dass die View einer gespeicherten Auswahlabfrage entspricht, ist Dir klar?

Entschuldigt bitte die späte Antwort. Ich habe nach Besprechen mit den Kollegen nun eine Zusammenführung der zwei Spalten in eine angelegt, um diese dann auszuwerten. Wie Ihr schon erwähnt habt, macht es die Sache im Allgemeinen einfacher. Nun bastle ich noch einem Export, welcher Abfragen in Access an schon bestehende Blätter in Excel anfügt.

Würde dazu aber einen neuen Thread machen, wenn ich Hilfe brauche.

Vielen Dank nochmal für eure Mühen. Ist nicht leicht als Neuling innerhalb so kurzer Zeit in Access einzusteigen, vor allem wenn Excel von der Vorgehensweise doch manchmal sehr anders ist als Access.