2017-07-20 5 views
0

Ich habe ein seltsames Problem mit der SQL-Anweisung unten. Die Ergebnisgruppen nach Benutzer-IDs und einige von ihnen gehen richtig aus, aber für eine von ihnen (Benutzer-ID = 1) wird das "initial_average" mit 3 multipliziert. Ich habe wirklich keine Ahnung warum .. Ist etwas nicht in Ordnung mit der Struktur der Erklärung? Wenn es nicht klar ist, besteht das Ziel darin, das Feld "initial_avg" in der Tabelle "tasks" zu summieren und es vom Benutzer ausbrechen zu lassen. Einige Hilfe mit diesem wird sehr geschätzt. Ich benutze MySQL.Inner Join in Kombination mit Summe und Gruppe von

SELECT sum(initial_avg) AS initial_average 
    , sum(initial_std) AS initial_standard_dev 
    , tasks.user 
    , hourly_rate 
FROM tasks 
INNER JOIN user_project 
    ON tasks.user=user_project.user 
    AND tasks.project=59 
    AND tasks.user=1 
GROUP BY tasks.user 
+0

Ihre Frage zu aktualisieren und fügen Sie ein richtiges Datenbeispiel – scaisEdge

+0

Ich habe es gerade gelöst, indem ich eine andere "und" -Klausel (AND user_project.project = 59) –

+0

wahrscheinlich sollte gruppieren, indem stündliche_rate. und da Sie einen inneren Join verwenden, sollten die 'und tasks.project = -59 und tasks.user = 1 'wirklich in der' where' Klausel sein. – xQbert

Antwort

0

Ich löste es nur durch Hinzufügen eines weiteren "und" -Klausel (AND user_project.project = 59)

0

Ihre Abfrage optimieren (Try it):

SELECT SUM(initial_avg) AS initial_average, SUM(initial_std) AS initial_standard_dev, tasks.user, hourly_rate FROM tasks INNER JOIN user_project ON tasks.user = user_project.user AND tasks.project = User_project.project WHERE tasks.project = 59 AND tasks.user = 1 GROUP BY tasks.user, hourly_rate