Neuigkeiten:

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

Mobiles Hauptmenü

zu viele Fälle durch Verknüpfung

Begonnen von smartie, Januar 03, 2013, 19:19:23

⏪ vorheriges - nächstes ⏩

smartie

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

DF6GL

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..

smartie

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.

Beaker s.a.

Hallo smarty,
ZitatDer ist natürlich jetzt ziemlich unübersichtlich
Schaust Du hier:
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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

smartie

danke für den tipp,das merk ich mir!Aber es wird an meinem eigentlichen Problem nicht viel geändert haben  ;)

DF6GL

Hallo,

Du hast auch nicht diese Frage beantwortet:

ZitatWelche Daten  erwartest Du aus dieser Stuation ?