Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: calixto am November 03, 2014, 19:49:36

Titel: Abfrage aus mehreren Tabellen mit gleichem Kombinationsfeld
Beitrag von: calixto am November 03, 2014, 19:49:36
Hallo, habe zwar schon einige Datenbanken erstellt, hatte aber bisher noch keine in dieser Art, stehe damit leider noch sehr am Anfang und komme hier nicht weiter:

Zur Auswertung einer Umfrage mit vier unterschiedlichen Fragebögen unter vier Gruppen von Befragten habe ich vier Tabellen und entsprechende Formulare angelegt. Einige Fragen/Felder in den Tabellen/Formularen sind gleich, und ich möchte die Antworten der Gruppen in einer Abfrage vergleichen. Für Bewertungsfragen habe ich ein Kombinationsfeld mit folgenden Antwortoptionen (sehr gut, gut, weniger gut, nicht gut). Für jede Gruppe einzeln konnte ich je eine Abfrage erstellen, wer wie oft welche Antwort gegeben hat, jedoch nicht aus diesen vier Abfragen eine weitere Abfrage generieren. Diese Abfrage soll mir sowohl die Antwortoptionen (als Spalte, also "Sehr gut", "gut" usw.) und die verschiedenen Gruppen (als Zeile, also Gruppe 1, Gruppe 2 etc.) ausgibt und zählt (1xsehr gut Gruppe 1, 3xsehr gut Gruppe 2 usw.). Was mache ich falsch?
Ich danke SEHR für Hinweise!

Die vier Tabellen sind über eine fünfte verknüpft, die nur IDs enthält.
Benötige ich hier vielleicht andere oder zusätzliche Verknüpfungen?
Titel: Re: Abfrage aus mehreren Tabellen mit gleichem Kombinationsfeld
Beitrag von: MzKlMu am November 03, 2014, 20:25:47
Hallo,
hat jede Gruppe die gleichen Fragen ?
Ich vermisse eine Tabelle für die Antwortoptionen.
Und wo wird die Bewertung gespeichert, in welchem Feld ?

Ich denke, das Datenmodel ist grundsätzlich falsch und zwar erheblich..

Kannst Du mal ein Bild hochladen, in dem man die Feldernamen ganz sieht und auch alle Felder.
Titel: Re: Abfrage aus mehreren Tabellen mit gleichem Kombinationsfeld
Beitrag von: calixto am November 03, 2014, 21:33:28
Hallo MzKlMu,
vielen Dank für die schnelle Rückmeldung.

Ein Formular habe ich hochgeladen. Frage 1a hat ein typisches Kombinationsfeld integriert, wo die Bewertung gespeichert ist.
Nur einige Fragen z.B. 1a, 1b, 1c, 2 etc. sind bei allen Gruppen identisch und lassen sich in Charts im Vergleich darstellen.

Die Abfrage funktioniert wunderbar für EINE Tabelle/EIN Formular, aber eben nicht mehrere Tabellen im Vergleich. Muss ich tatsächlich für alle diese Abfragen dann eigene Tabellen anlegen und mit den anderen Tabellen verknüpfen?

Vielen Dank nochmals für einen Tipp.
Titel: Re: Abfrage aus mehreren Tabellen mit gleichem Kombinationsfeld
Beitrag von: MaggieMay am November 03, 2014, 21:47:04
Hallo,

auch ich denke, das Datenkonzept ist falsch, da gibt es andere Ansätze, in welchen die Fragen pro Fragebogen einzeln in einer untergeordneten Tabelle gespeichert werden. Auch verstehe ich den Sinn der fünften Tabelle nicht.

Was das betrifft:
ZitatFür jede Gruppe einzeln konnte ich je eine Abfrage erstellen, wer wie oft welche Antwort gegeben hat, jedoch nicht aus diesen vier Abfragen eine weitere Abfrage generieren.
so zeige deinen Versuch (-> SQL-Code), dann sehen wir weiter.
Titel: Re: Abfrage aus mehreren Tabellen mit gleichem Kombinationsfeld
Beitrag von: calixto am November 03, 2014, 21:58:21
Hallo MaggieMay,

danke auch für Deine Rückmeldung.
Der SQL-Code für die Einzelabfrage für Frage 1a lautet:
TRANSFORM Count(Jugend.ID) AS [Gesamtsumme von ID]
SELECT Jugend.[Frage 1a Themen], Count(Jugend.ID) AS AnzahlvonID
FROM Jugend
GROUP BY Jugend.[Frage 1a Themen]
PIVOT Jugend.ID;

Wenn ich die Ergebnisse dieser Kreuztabelle dann in einer Abfrage für alle Gruppen gemeinsam abfragen will, kommen nur fehlerhafte Ergebnisse bei diesem Code (Antwortoptionen werden nicht gezeigt und richtig zugeordnet). Hier der Code für erstmal 3 Gruppen:
SELECT Veranstalter_Kreuztabelle.AnzahlvonID, Jugend_Kreuztabelle1_1.AnzahlvonID, Politik_Kreuztabelle3.AnzahlvonID
FROM Jugend_Kreuztabelle1 AS Jugend_Kreuztabelle1_1, Veranstalter_Kreuztabelle, Politik_Kreuztabelle3
GROUP BY Veranstalter_Kreuztabelle.AnzahlvonID, Jugend_Kreuztabelle1_1.AnzahlvonID, Politik_Kreuztabelle3.AnzahlvonID;



Titel: Re: Abfrage aus mehreren Tabellen mit gleichem Kombinationsfeld
Beitrag von: MaggieMay am November 04, 2014, 21:40:14
Hallo,

du musst die Tabellen über die Frage miteinander verknüpfen, sonst erhältst du ja ein Kreuzprodukt.

Wie sieht denn eigentlich dein Wunschergebnis aus?
Titel: Re: Abfrage aus mehreren Tabellen mit gleichem Kombinationsfeld
Beitrag von: calixto am November 07, 2014, 09:53:25
Hallo MaggieMay,

danke für Deine Rückmeldung. Ich möchte die 4 verschiedenen Gruppen einzeln auswerten, aber zu verschiedenen (einfachen) Bewertungsfragen oder den statistischen Angaben vergleichen. Mir leuchtet schon ein, dass man eigentlich ein Tabelle extra anlegen müsste.

Durch die Verknüpfung der IDs über eine Einzeltabelle (war Tipp von IT-Experten) gelingt zumindest eine einfache Abfrage, bei der alle vier Tabellen berücksichtigt werden z.B. Abfrage Menge der Befragten nach Gruppen - aber eben keine komplexeren Abfragen mit Kombinationsfeld-Angaben.

Ist also der einzige Weg, für die Vergleichsfragen eine eigene Tabelle anzulegen, darin die Fragen (mit Kombifeldern) zu schreiben und diese Feldern dann in den jeweiligen Tabellen/Formularen der einzelnen Gruppen zu platzieren?

Danke für eine abschießende Einschätzung und die Unterstützung!
Herzliche Grüße
Titel: Re: Abfrage aus mehreren Tabellen mit gleichem Kombinationsfeld
Beitrag von: MaggieMay am November 07, 2014, 16:12:20
Hallo,
Zitataber zu verschiedenen (einfachen) Bewertungsfragen oder den statistischen Angaben vergleichen
und genau darauf bezog sich meine Frage, wie soll das optisch dargestellt werden?
Bitte an einem Beispiel zeigen und nicht beschreiben.
Titel: Re: Abfrage aus mehreren Tabellen mit gleichem Kombinationsfeld
Beitrag von: calixto am November 07, 2014, 16:27:29
Hallo, danke für die Nachfrage.
Hochgeladen habe ich 1. die (funktionierende) Abfrage nach Teilnehmern der Befragung nach Gruppen (noch nicht viele, da Pretest). Und 2. die (nicht funktionierende) Abfrage nach der Beurteilung. Wenn es funktionieren würde, müssten vorweg die Werte "sehr gut", "gut" etc. aus den jeweiligen Kombinationsfeldern stehen. Ich mache übrigens daraus Charts - die wolltest Du nicht sehen oder?
Danke und bis bald
Titel: Re: Abfrage aus mehreren Tabellen mit gleichem Kombinationsfeld
Beitrag von: MaggieMay am November 07, 2014, 17:57:59
Was ich am liebsten sehen würde wären keine Biilder sondern eine Beispiel-DB. ;)

Ich weiß auch nicht wozu du da Kreuztabellenabfragen einsetzt, wenn du lediglich die Zahl der Antworten pro Gruppe und Beurteilung sehen willst.
Das sollte sich doch mit einer gruppierten Abfrage ermitteln lassen:Select Frage1a, Count(*) As AnzJ From Jugend Group By Frage1aDiese Abfragen, eine je Gruppe, lassen sich dann folgendermaßen zusammenführen:Select J.Frage1a, AnzJ, AnzPäd, AnzV, AnzPol
From ((abfJugend As J Inner Join abfPolitik As Pol ON J.Frage1a = Pol.Frage1a)
Inner Join abfVeranstaltung As V ON J.Frage1a = V.Frage1a)
Inner Join abfPaedagogen As Päd ON J.Frage1a = Päd.Frage1a
Titel: Re: Abfrage aus mehreren Tabellen mit gleichem Kombinationsfeld
Beitrag von: calixto am November 10, 2014, 09:00:10
Liebe MaggieMay, vielen Dank für die Hilfestellung.

Ich habe das für Frage 1 Gruppe Jugend wie folgt übernommen:
SELECT Jugend.[Frage 1a Themen], Count(*) AS AnzJ
FROM Jugend
GROUP BY Jugend.[Frage 1a Themen];

Für die 2. Gruppe:
SELECT Veranstalter.[Frage 1a Themen], Count(*) AS AnzV
FROM Veranstalter
GROUP BY Veranstalter.[Frage 1a Themen];

Die Zusammenführung nach Gruppen habe ich mit Deinem Vorschlag einfach nicht hinbekommen - leider. Das wäre dann der Schlüssel für die restlichen Abfragen.

Daher meine hoffentlich letzte Frage: könntest Du den SQL-Code auf Grundlage der obenstehenden Codes schicken? Dann kann ich vielleicht da weitermachen. Zu blöd von mir - sorry!!!!
Titel: Re: Abfrage aus mehreren Tabellen mit gleichem Kombinationsfeld
Beitrag von: MaggieMay am November 10, 2014, 10:48:55
Hi,

woran scheitert es denn, wie gehst du vor?

Erstelle eine neue Abfrage, nimm die beiden Abfragen als Datenquelle, verknüpfe die Abfragen über den gemeinsamen Key und wähle die anzuzeigenden Datenfelder aus.
Titel: Re: Abfrage aus mehreren Tabellen mit gleichem Kombinationsfeld
Beitrag von: calixto am November 10, 2014, 11:34:28
Ich kriege die Inner Join Verknüpfung zwischen den Abfragen nicht hin...habe sonst immer im Entwurf-Modus gearbeitet, bin mit SQL daher noch nicht so fit...

Das haut bei mir nicht hin:
SELECT Jugend.[Frage 1a Themen] AS AnzJ, AnzV
FROM  Jugend.[Frage 1a Themen] INNER JOIN Veranstalter.[Frage 1a Themen] ON Jugend.[Frage1a Themen] = Veranstalter.[Frage 1a Themen]
Titel: Re: Abfrage aus mehreren Tabellen mit gleichem Kombinationsfeld
Beitrag von: MaggieMay am November 10, 2014, 12:16:11
Meine Beschreibung bezog sich auf den Abfrageentwurf, der SQL-Code dazu sollte so aussehen:SELECT aJugend.[Frage 1a Themen], AnzJ, AnzV
FROM  aJugend INNER JOIN aVeranstalter
ON aJugend.[Frage 1a Themen] = aVeranstalter.[Frage 1a Themen]
wobei aJugend und aVeranstalter für die Abfragen stehen, in welchen die Zahlen ermittelt werden.

Zitatbin mit SQL daher noch nicht so fit
Dann erstelle die Abfrage im Entwurfsfenster und schau dir anschließend das Ergebnis in der SQL-Ansicht an.
Titel: Re: Abfrage aus mehreren Tabellen mit gleichem Kombinationsfeld
Beitrag von: calixto am November 10, 2014, 13:01:43
Ich glaube, bald habe ich es.
Ich sehe mit Deinem Hinweis nun in der Entwurfsansicht die innere Verknüpfung der zwei Tabellen (siehe Bild), das leuchtet mir ein. Aber in der Abfrage gibt er mir noch nicht die Daten aus, sondern fragt davor nach Parameterwerten von AnzJ, und AnzV. D.h. doch, dass er die Ergebnisse der Abfrage nicht auswerten kann oder (siehe auch Bild)?

SQL dazu:
SELECT Jugend.[Frage 1a Themen], AnzJ AS Ausdr1, AnzV AS Ausdr2
FROM Jugend INNER JOIN Veranstalter ON Jugend.[Frage 1a Themen] = Veranstalter.[Frage 1a Themen];

Bei mir heißt die Abfrage: Jugend.[Frage 1a Themen], nicht: aJugend.[Frage 1a Themen] oder liegt da der Fehler im Benennen? Haben Abfragen in SQL einen anderen Code?

DANKE nochmal vielmals für Deine Geduld!!!
Titel: Re: Abfrage aus mehreren Tabellen mit gleichem Kombinationsfeld
Beitrag von: MaggieMay am November 10, 2014, 13:23:56
Wenn die Tabelle bereits Jugend heißt, kann die Abfrage nicht denselben Namen haben.
Du solltest die Abfragen, in denen die Anzahl ermittelt wird (siehe « Antwort #10 am: Heute um 09:00:10 »), unter einem anderen Namen speichern und diese in der Zusammmenfassungsabfrage verwenden.
Titel: Re: Abfrage aus mehreren Tabellen mit gleichem Kombinationsfeld
Beitrag von: calixto am November 10, 2014, 14:05:33
Ohje, nochmal für Dumme wie mich:

Meine Tabellen heißen "Jugend" und "Veranstalter" - die brauche ich nicht bei dieser Abfrage, richtig?

Meine Abfragen heißen "JU001a Themen" und "VST001a Themen" - nur die brauche ich und muss sie mit einer inneren Verknüpfung verbinden, richtig?

Ich habe nun die Namen der Abfragen in Deine Formel eingesetzt. Die beiden Abfragen sind innerlich verknüpft, das sehe ich auch in der Entwurfsansicht. Die Abfrage aber bleibt im Ergebnis mit diesem Code leider leer:
SELECT [JU001a Themen].AnzJ,  [VST001a Themen].AnzV
FROM  [JU001a Themen] INNER JOIN  [VST001a Themen]
ON [JU001a Themen].AnzJ = [VST001a Themen].AnzV

Gibt es noch einen Tipp???
Titel: Re: Abfrage aus mehreren Tabellen mit gleichem Kombinationsfeld
Beitrag von: MaggieMay am November 10, 2014, 14:14:37
Du bist schon eine echt harte Nuss, du brauchst doch nun wirklich nur noch die richtigen Namen in den bereits geposteten Code einzutragen.
So sollte das aussehen:SELECT [JU001a Themen].[Frage 1a Themen],  [JU001a Themen].AnzJ,  [VST001a Themen].AnzV
FROM  [JU001a Themen] INNER JOIN  [VST001a Themen]
ON [JU001a Themen].[Frage 1a Themen] = [VST001a Themen].[Frage 1a Themen]
Titel: Re: Abfrage aus mehreren Tabellen mit gleichem Kombinationsfeld
Beitrag von: calixto am November 10, 2014, 14:17:49
Wunderbar, das hat geklappt! Ganz herzlichen Dank, MaggieMay, für Deine Zeit und Kompetenz - daran kann ich jetzt die anderen Fragen lösen.