Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge

SQL Abfrage

Anwender / 11 Antworten / Flachansicht Nickles

Hallo Leute, ich habe ein ähnliches Problem wie logo3.
Ich kriege die Abfrage einfach nicht hin.

Situation
*********

Habe 3 Tabellen:

- tblInterpret (IDInterpret, Interpret)
- tblKategorie (IDKategorie, Kategorie)
- tblInterpret2Kategorie (fIDInterpret, fIDKategorie)

In der Tabelle tblInterpret2Kategorie werden den Interpreten verschiedene Kategorie zugewiesen.

Gewünschte Abfrage
*******************

Die Abfrage soll folgende Spalten enthalten:

- Interpret
- Anzahl Katgorie (in vielen Kategorien er zugeordnet ist)

Zusätzlich soll die Abfrage durch die Bedingung fIDKategorie=X eingeschränkt werden. (X steht für eine beliebige Kategorie).

Ich würde mich sehr über Hilfe freuen. Danke.

Anwender

bei Antwort benachrichtigen
Anwender d-oli „Hallo So was in der Art ...? drop table tblInterpret drop table tblKategorie...“
Optionen

Ich hab mal ein Teil der Abfrage in Access erstellen lassen:

SELECT tblInterpret.Interpret, Count(tblInterpret2Kategorie.ID) AS AnzahlvonID
FROM tblKategorie INNER JOIN (tblInterpret INNER JOIN tblInterpret2Kategorie ON tblInterpret.IDInterpret = tblInterpret2Kategorie.fIDInterpret) ON tblKategorie.IDKategorie = tblInterpret2Kategorie.fIDKategorie
GROUP BY tblInterpret.Interpret;

Diese Abfrage liefert in der ersten Spalte alle Interpreten und in der zweiten Spalte die Anzahl Kategorien, welchen die Interpreten zugeordnet sind.

Das Problem allerdings kommt jetzt, wenn ich die Abfrage zusätzlich nach fIDKategorie einschränken will.
Habe das wieder durch Access erstellen lassen:

SELECT tblInterpret.Interpret, Count(tblInterpret2Kategorie.ID) AS AnzahlvonID, tblInterpret2Kategorie.fIDKategorie
FROM tblKategorie INNER JOIN (tblInterpret INNER JOIN tblInterpret2Kategorie ON tblInterpret.IDInterpret = tblInterpret2Kategorie.fIDInterpret) ON tblKategorie.IDKategorie = tblInterpret2Kategorie.fIDKategorie
GROUP BY tblInterpret.Interpret, tblInterpret2Kategorie.fIDKategorie
HAVING tblInterpret2Kategorie.fIDKategorie=2;

Jetzt werden zwar nur Interpreten der Kategorie ID=2 angezeigt, aber in der zweiten Spalte (Anzahl Kategorien) wird überall der Wert 1 angezeigt, obwohl mehrere dieser Interpreten in mehr als nur einer Kategorie zugeordnet sind. Wie muss die Abfrage heissen, damit auch in der Spalte 2 (Anzahl Kategorien) der richtige Wert angezeigt wird?

Anwender

bei Antwort benachrichtigen