Ich versuche, die Summe Zeit für jeden Benutzer in einer bestimmten Gruppe in den nächsten 30 Tagen gezogen zu ziehen. Ich bin bei MySQL nicht großartig, daher kann vieles falsch sein. Dies ist aus einer JIRA-Datenbank.MySQL Query Multiple Joins duplizieren Daten für jede Zeile? JIRA-Datenbank
SELECT DISTINCT cu.display_name AS 'Associate', sum(wl.timeworked/3600) AS '30 Days' FROM worklog AS wl, cwd_user AS cu INNER JOIN cwd_membership AS cm ON cu.directory_id=cm.directory_id AND cu.lower_user_name=cm.lower_child_name AND cm.membership_type='GROUP_USER' INNER JOIN worklog ON worklog.AUTHOR = cu.user_name WHERE cm.lower_parent_name='atl_servicedesk_it_agents' AND wl.STARTDATE BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 30 DAY) ORDER BY cu.last_name;
Gerade jetzt zeigt es nur die ersten Nutzer mit einer Summe von allem Namen in der Zeit für alle gearbeitet. Das ist natürlich nicht das, was ich will ... Wenn ich die Summe aus der Zeitarbeit entferne, zeigt sie ungefähr die Hälfte der Benutzer aus dieser Gruppe, aber jeder Benutzer hat einen Wert von 16 Stunden für die Zeitarbeit, was falsch ist. Nur ein Benutzer hat einen Wert für die nächsten 30 Tage und es ist für 16 Stunden, aus irgendeinem Grund verdoppelt es diese Information. Irgendwelche Ideen?
Ich versuche es 'GROUP BY cu. display_name' (oder besser irgendein Primärschlüssel für den Benutzer) und nach der WHERE-Klausel platzieren und 'DISTINCT' entfernen, führt das zu anderen Ergebnissen? –
Doing das zeigt jetzt alle Namen, nun 136 der 367. Allerdings haben diese immer noch zufällige Zeiten von ihren Namen, wenn es eigentlich nur eine Zeile geben sollte, weil nur ein Benutzer Zeit für die nächsten 30 Tage geloggt hat. Ich bin nicht sicher, ob ich den Berechnungsteil falsch gemacht habe mit der Berechnung der Summe basierend auf den Zahlen von irgendjemand und nicht nur, wo die Namen gleich sind. – Cole