Neuigkeiten:

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

Mobiles Hauptmenü

komisches Abfragekonstrukt

Begonnen von alpe, Mai 08, 2012, 22:14:38

⏪ vorheriges - nächstes ⏩

alpe

Hallo,

ich steh echt auf dem Schlauch was meine Abfrage angeht.
Also ich habe folgende Tabellen:

Kategorientabelle

IDFahrzTyp
1Ford
2Audi

Datentabelle (die bekomme ich leider so geliefert)

IDNameFahrzTypRennen1FahrzTypRennen2
1Erwin11
2Horst21
3Klaus21

In der Abfrage möchte ich wissen welche Anzahl pro Fahrzeugtyp pro Rennen teilgenommen haben

SOLL:

IDFahrzTypFahrzTypRennen1_AnzFahrzTypRennen2_Anz
1Ford13
2Audi20

Hat da jemand von Euch ne Idee wie ich das machen kann?
Ich bekomme das immer nur für ein "Rennen" hin.

oma

Hallo alpe,

dein Datenmodell ist so nicht in Ordnung! Aufzeichnungfelder wie FahrzeugtypRennen1 u. FahrzeugtypRennen2 sollten tunlichst vermieden werden.

Du brauchst:

tblTyp: Typ_ID, Bezeichnung...
tblFahrer: Fahrer_ID, Nachname....
tblRennen: Renn_ID, Bezeichnung, Fahrer_ID_F, Typ_ID_F      (  .._F steht für Fremdschlüssel)

für deinen jetzigen Tabellenaufbau geht mit den wenig performanten Aggregatfunktionen z.B.

SELECT tblTypen.ID_Fahrzeug, First(tblTypen.Typ) AS Typ,
NZ(DCount("Rennen1","tblFahrer","Rennen1=" & [ID_Fahrzeug]),0) AS Rennen1,
NZ(DCount("Rennen2","tblFahrer","Rennen2=" & [ID_Fahrzeug]),0) AS Rennen2
FROM tblTypen
GROUP BY tblTypen.ID_Fahrzeug


Gruß Oma
nichts ist fertig!

alpe

vielen dank,

ich wusste es schon das das datenmodell so nicht stimmt.
leider kann ich es auf die schnelle nicht umstellen
ich hab mir Anzahl der Fhzg pro Rennen jetzt als subqueries gebaut
und dann mit der Fahrzeugtypentabelle "geleftjoined" - das passt.

oma

Hallo,

möglich ohne Verknüpfung der Tabellen und ohne Domänenfunktionen ist auch:

SELECT tblTypen.ID_Fahrzeug, First(tblTypen.Typ) AS Typ,
  (SELECT Count(tblFahrer.Rennen1) AS AnzahlvonRennen1  FROM tblFahrer Where Rennen1= [ID_Fahrzeug]) AS Rennen1,
  (SELECT Count(tblFahrer.Rennen2) AS AnzahlvonRennen1  FROM tblFahrer Where Rennen2= [ID_Fahrzeug]) AS Rennen2
FROM tblTypen
GROUP BY tblTypen.ID_Fahrzeug


Gruß Oma
nichts ist fertig!