Laden...

Datenbank Rechenproblem mit JOIN

Erstellt von Kloppo93 vor 8 Jahren Letzter Beitrag vor 8 Jahren 913 Views
K
Kloppo93 Themenstarter:in
15 Beiträge seit 2015
vor 8 Jahren
Datenbank Rechenproblem mit JOIN

verwendetes Datenbanksystem: <T-SQL>

Hallo ich arbeite auf dem Microsoft SQL Server 2012 und versuche mich gerade an einer SQL Abfrage.

Diese Abfrage sieht wie folgt aus:

SELECT 
  b.Buchmacher, 
  (SELECT SUM(t.Summe + case when w.Gewinn >=0 then w.Zurück else w.Gewinn end) FROM Transaktionen t JOIN Wetten w on w.Buchmacher = b.Id WHERE t.Buchmacher = b.id)
FROM Buchmacher b

Für diese Abfrage habe ich 3 Tabellen:

Wetten:


Id : int (Primary Key)
Gewinn : decimal
Zurück : decimal
Buchmacher : int (Foreign Key)

Buchmacher:


Id : int (Primary Key)
Buchmacher : varchar

Transaktionen:


Id : int (Primary Key)
Datum : date
Buchmacher : int (Foreign Key)
Summe : decimal 

Ich möchte nun alle Transaktionen zu einem Buchmacher zusammenrechnen und diese mit dem Gewinn/Zurück-Spalte einer Wette eines Buchmachers addieren.

Dies klappt aber nicht ganz wie gewünscht. Das Problem ist, dass ich die Werte immer * die Transaktionsanzahl eines Buchmachers erhalte.

Beispiel:

Ich habe 2 Transaktionen beim Buchmacher Tipico:

  • 10.000€
  • 200€  
    

Nun habe ich noch Gewinne, Verluste und Offene Wetten.

Diese Betragen laut den Datensätzen 110€.

Macht als Gesamtbetrag: 10.310€

Als Ergebnis erhalte ich nun jedoch 20.620€, also genau den Gesamtbetrag * die 2 Transaktionen beim Buchmacher Tipico.

Was mache ich falsch? Kann mir da jemand helfen? Weiß echt so langsam nicht mehr weiter. Danke Vielmals.

T
314 Beiträge seit 2013
vor 8 Jahren

Du solltest beim JOIN w und t matchen und nicht w und b.

K
Kloppo93 Themenstarter:in
15 Beiträge seit 2015
vor 8 Jahren

Ja stimmt, du hast Recht aber leider passt die Ausgabe immer noch nicht.

Ich habe ingesamt 3 Buchmacher und bei allen 3 Buchmachern gibt es Transaktionen sowie Wetten.

Nun bekomme ich nur beim ersten Buchmacher eine Ausgabe von 634,7€ und bei den anderen beiden nicht.

Die 634,7€ kommen dadurch zustande, dass der 2. Buchmacher ein Guthaben (aus Transaktionen) von 500€ aufweist und die Wettbeträge bei Tipico 134,70€.

Hast du da vielleicht eine Idee?

T
314 Beiträge seit 2013
vor 8 Jahren

Öhm naja weil Du 2 Transaktionen hast. Jede diese Transaktion hat entsprechend Tipico als Buchmacher. Nun verknüpfst Du den Buchmacher mit den Wetten des Buchmachers.

Du hast also keine Verbindung zwischen Wetten und Transaktionen. Wozu also der JOIN? Entweder du hast eine Beziehung zwischen Transaktionen und zugehörigen Wetten oder der JOIN ist falsch.

Also Entweder SUMME der Transaktionen des Buchmachers + SUMME der Wetten des Buchmachers oder eben Transaktionen des Buchmachers + SUMME des Gewinns der Wetten der Transaktion.