Hallo zusammen,
ich bin neu hier und versuche mich in Access reinzuarbeiten, komme aber immer an der gleichen Stelle nicht mehr weiter...
Ich möchte gerne eine Abfrage erstellen, die bestimmte Daten aus 4 verschiedenen Tabellen filtert und ausgibt. Die vier Tabellen sollen über eine gemeinsame Variable verknüpft werden. Dabei ist eine der Tabellen gewissermaßen die "Haupttabelle", da sie mit den anderen 3 Tabellen per 1:n-Beziehung verknüpft ist. Wenn ich nur Variablen aus einer Tabelle abfrage, bekomme ich die gewünschte Anzahl an Fällen. Sobald zusätzlich Variablen aus den anderen Tabellen abgefragt werden, werden zusätzlich Fälle ausgegeben, die es meiner Meinung nach nicht geben dürfte :'(
Hat jemand einen Tipp für mich??
Wäre echt super
Hallo,
Du meinst mit Variablen vermutlich die (Schlüssel)Felder, über die die Tabellen miteinander in Beziehung stehen (sollen)
"werden zusätzlich Fälle ausgegeben, die es meiner Meinung nach nicht geben dürfte "
Welche Daten erwartest Du aus dieser Stuation ?
Zeige mal die SQL (Abfrageentwurf/SQL-Ansicht) der Abfrage..
SELECT PUF_Haushalte.hhid, PUF_Haushalte.h02, PUF_Haushalte.h04_3, PUF_Autos.vmid, PUF_Autos.h0411, PUF_Autos.klasse, PUF_Autos.anzfahrt, PUF_Autos.gesfkm, PUF_Autos.durchkm, PUF_Autos.gesfmin, PUF_Autos.durchmin, PUF_Personen.pid, PUF_Personen.hp_sex, PUF_Personen.hp_alter, PUF_Personen.hp_bkat, PUF_Personen.hp_besch, PUF_Personen.mobil, PUF_Personen.anzkm, PUF_Personen.anzmin, PUF_Personen.pergrup1, PUF_Personen.stich_j, PUF_Personen.stich_m, PUF_Personen.stichtag, PUF_Personen.stichwo, PUF_Personen.saison, PUF_Haushalte_1.hhgr06, PUF_Haushalte_1.hhgr14, PUF_Haushalte_1.hhgr18, PUF_Personen.polgk, PUF_Wege.wid, PUF_Wege.st_time, PUF_Wege.st_stdg, PUF_Wege.en_time, PUF_Wege.st_dat, PUF_Wege.en_dat, PUF_Wege.w04, PUF_Wege.hwzweck, PUF_Wege.w01, PUF_Wege.w13, PUF_Wege.w044, PUF_Wege.w05_5, PUF_Wege.pkw_f, PUF_Wege.pkw_mf, PUF_Wege.wegkm_k, PUF_Wege.wegmin_k, PUF_Wege.tempo
FROM PUF_Haushalte AS PUF_Haushalte_1, ((PUF_Haushalte INNER JOIN PUF_Autos ON PUF_Haushalte.hhid = PUF_Autos.hhid) INNER JOIN PUF_Personen ON PUF_Haushalte.hhid = PUF_Personen.hhid) INNER JOIN PUF_Wege ON PUF_Haushalte.hhid = PUF_Wege.hhid
GROUP BY PUF_Haushalte.hhid, PUF_Haushalte.h02, PUF_Haushalte.h04_3, PUF_Autos.vmid, PUF_Autos.h0411, PUF_Autos.klasse, PUF_Autos.anzfahrt, PUF_Autos.gesfkm, PUF_Autos.durchkm, PUF_Autos.gesfmin, PUF_Autos.durchmin, PUF_Personen.pid, PUF_Personen.hp_sex, PUF_Personen.hp_alter, PUF_Personen.hp_bkat, PUF_Personen.hp_besch, PUF_Personen.mobil, PUF_Personen.anzkm, PUF_Personen.anzmin, PUF_Personen.pergrup1, PUF_Personen.stich_j, PUF_Personen.stich_m, PUF_Personen.stichtag, PUF_Personen.stichwo, PUF_Personen.saison, PUF_Haushalte_1.hhgr06, PUF_Haushalte_1.hhgr14, PUF_Haushalte_1.hhgr18, PUF_Personen.polgk, PUF_Wege.wid, PUF_Wege.st_time, PUF_Wege.st_stdg, PUF_Wege.en_time, PUF_Wege.st_dat, PUF_Wege.en_dat, PUF_Wege.w04, PUF_Wege.hwzweck, PUF_Wege.w01, PUF_Wege.w13, PUF_Wege.w044, PUF_Wege.w05_5, PUF_Wege.pkw_f, PUF_Wege.pkw_mf, PUF_Wege.wegkm_k, PUF_Wege.wegmin_k, PUF_Wege.tempo
HAVING (((PUF_Haushalte.h02)=4) AND ((PUF_Personen.pid)=1) AND ((PUF_Personen.hp_bkat)=1) AND ((PUF_Personen.hp_besch)=1) AND ((PUF_Haushalte_1.hhgr06)=1) AND ((PUF_Haushalte_1.hhgr18)=2));
das ist der sql-text, den ich mit dem Abfrageentwurfassistenten erstellt habe. Der ist natürlich jetzt ziemlich unübersichtlich, weiß nicht ob du damit was anfangen kannst. Vermutlich liegt der Fehler, darin dass die Tabellenbeziehungen nicht ausreichend definiert sind. Kann das sein? Habe sie bisher nur über die Primärschlüssel verknüpfen können, die anderen Beziehungstypen kann ich größtenteils nicht verändern.
achja, letztendlich sollten im besten Fall die gesuchten Wegeinformationen mit zugehörigen Informationen aus den anderen Tabellen ausgegeben werden. Bisher werden aber mehr Wege ausgegeben, als überhaupt in der Wegetabelle vorhanden sind.
Hallo smarty,
ZitatDer ist natürlich jetzt ziemlich unübersichtlich
Schaust Du hier:
http://www.dpriver.com/pp/sqlformat.htm (http://www.dpriver.com/pp/sqlformat.htm)
Dein SQL würde dann etwa so aussehen
SELECT puf_haushalte.hhid,
puf_haushalte.h02,
puf_haushalte.h04_3,
puf_autos.vmid,
puf_autos.h0411,
puf_autos.klasse,
puf_autos.anzfahrt,
puf_autos.gesfkm,
puf_autos.durchkm,
puf_autos.gesfmin,
puf_autos.durchmin,
puf_personen.pid,
puf_personen.hp_sex,
puf_personen.hp_alter,
puf_personen.hp_bkat,
puf_personen.hp_besch,
puf_personen.mobil,
puf_personen.anzkm,
puf_personen.anzmin,
puf_personen.pergrup1,
puf_personen.stich_j,
puf_personen.stich_m,
puf_personen.stichtag,
puf_personen.stichwo,
puf_personen.saison,
PUF_Haushalte_1.hhgr06,
PUF_Haushalte_1.hhgr14,
PUF_Haushalte_1.hhgr18,
puf_personen.polgk,
puf_wege.wid,
puf_wege.st_time,
puf_wege.st_stdg,
puf_wege.en_time,
puf_wege.st_dat,
puf_wege.en_dat,
puf_wege.w04,
puf_wege.hwzweck,
puf_wege.w01,
puf_wege.w13,
puf_wege.w044,
puf_wege.w05_5,
puf_wege.pkw_f,
puf_wege.pkw_mf,
puf_wege.wegkm_k,
puf_wege.wegmin_k,
puf_wege.tempo
FROM puf_haushalte AS PUF_Haushalte_1,
((puf_haushalte
INNER JOIN puf_autos
ON puf_haushalte.hhid = puf_autos.hhid)
INNER JOIN puf_personen
ON puf_haushalte.hhid = puf_personen.hhid)
INNER JOIN puf_wege
ON puf_haushalte.hhid = puf_wege.hhid
GROUP BY puf_haushalte.hhid,
puf_haushalte.h02,
puf_haushalte.h04_3,
puf_autos.vmid,
puf_autos.h0411,
puf_autos.klasse,
puf_autos.anzfahrt,
puf_autos.gesfkm,
puf_autos.durchkm,
puf_autos.gesfmin,
puf_autos.durchmin,
puf_personen.pid,
puf_personen.hp_sex,
puf_personen.hp_alter,
puf_personen.hp_bkat,
puf_personen.hp_besch,
puf_personen.mobil,
puf_personen.anzkm,
puf_personen.anzmin,
puf_personen.pergrup1,
puf_personen.stich_j,
puf_personen.stich_m,
puf_personen.stichtag,
puf_personen.stichwo,
puf_personen.saison,
PUF_Haushalte_1.hhgr06,
PUF_Haushalte_1.hhgr14,
PUF_Haushalte_1.hhgr18,
puf_personen.polgk,
puf_wege.wid,
puf_wege.st_time,
puf_wege.st_stdg,
puf_wege.en_time,
puf_wege.st_dat,
puf_wege.en_dat,
puf_wege.w04,
puf_wege.hwzweck,
puf_wege.w01,
puf_wege.w13,
puf_wege.w044,
puf_wege.w05_5,
puf_wege.pkw_f,
puf_wege.pkw_mf,
puf_wege.wegkm_k,
puf_wege.wegmin_k,
puf_wege.tempo
HAVING ( ( ( puf_haushalte.h02 ) = 4 )
AND ( ( puf_personen.pid ) = 1 )
AND ( ( puf_personen.hp_bkat ) = 1 )
AND ( ( puf_personen.hp_besch ) = 1 )
AND ( ( PUF_Haushalte_1.hhgr06 ) = 1 )
AND ( ( PUF_Haushalte_1.hhgr18 ) = 2 ) )
hth
gruss ekkehard
danke für den tipp,das merk ich mir!Aber es wird an meinem eigentlichen Problem nicht viel geändert haben ;)
Hallo,
Du hast auch nicht diese Frage beantwortet:
ZitatWelche Daten erwartest Du aus dieser Stuation ?