Entwickler-Ecke

Datenbanken - Vertragspersonen der einzelnen Verträge zählen


c#ler - Di 12.02.13 10:15
Titel: Vertragspersonen der einzelnen Verträge zählen
Hallo,
Ich bin SQL einsteiger.
Ich habe eine Tabelle [Vertrag], in der jedem Vertrag mehrere Vertragspersonen zugeordnet sind.
Ich möchte nun in einer Abfrage die Vertrags ID links haben (jede nur 1x) und dazu dann in der 2. Spalte die Anzahl der Vertragspersonen zu diesem Vertrag.
Ich habe schon etliche Beispiele gelesen, aber komm nicht auf einen grünen zweig. Habs mit Inner Join Versucht und mit einem Unterselect und nun auch mit Group by.
Kann mir da jemand helfen?


WasWeißDennIch - Di 12.02.13 10:21

Ich nehme mal an, dass es sich um 2 Tabellen handelt:

SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
SELECT
  V.VertragsID, COUNT(*)
FROM
  Vertrag V
INNER JOIN Vertragspersonen P
  ON P.ID = V.PersonenID
GROUP BY
  V.VertragsID
ORDER BY
  V.VertragsID


c#ler - Di 12.02.13 10:36

user profile iconWasWeißDennIch hat folgendes geschrieben Zum zitierten Posting springen:
Ich nehme mal an, dass es sich um 2 Tabellen handelt:

Es geht um die Tabellen Vertrag und VertragPerson


Delete - Di 12.02.13 10:45

- Nachträglich durch die Entwickler-Ecke gelöscht -


WasWeißDennIch - Di 12.02.13 10:49

Ich kenne die Tabellenstruktur ja nicht, wage das aber erst einmal zu bezweifeln. @c#ler: wie sieht denn die Tabellenbeziehung aus, und wie heißen die Schlüsselfelder?

[edit] Ich selbst habe das in meinem Statement evtl. (oder sogar wahrscheinlich) falsch herum aufgedröselt. [/edit]


c#ler - Di 12.02.13 11:04

user profile iconWasWeißDennIch hat folgendes geschrieben Zum zitierten Posting springen:
Ich kenne die Tabellenstruktur ja nicht, wage das aber erst einmal zu bezweifeln. @c#ler: wie sieht denn die Tabellenbeziehung aus, und wie heißen die Schlüsselfelder?

[edit] Ich selbst habe das in meinem Statement evtl. (oder sogar wahrscheinlich) falsch herum aufgedröselt. [/edit]

Ich habs....dummer Fehler
Es gibt in der Tabelle VertragPerson 2 relevante Spalten
ID und person
die ID steht für die ID des Vertrags und person (hatte ich nicht gesehen) steht für die jeweilige Person.
d.h. ich musste nur im Inner join statt vp_ID mit V_ID gleichzusetzen, einfach VP_Person mit Vertrag ID gleichsetzen.
Danke leutz


WasWeißDennIch - Di 12.02.13 11:15

Also eine m:n-Beziehung, das hatte ich mir gedacht. Da sind dann 3 Tabellen im Spiel: eine für die Verträge, eine für die Personen und eine für die Kombination dieser beiden.