Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: GROUP BY, zdublowane wartości
Forum PHP.pl > Forum > Bazy danych > SQLite
leonw
Witam

Temat wygląda następująco:
Mam trzy tabele (Alias, Player, WeaponData), każda związana z każdą przez "Player_ID".
W pierwszej tabeli "Alias", konkretna wartość (w tym przypadku 3) powtarza się dwa razy.
Teraz jeżeli wyciągam wartości z trzeciej tabeli, zgrupowane wg. player_ID, dostaje podwojony wynik.
Podejrzewam, że jest to związane przez wystąpienie tego samego "Player_ID" w tabeli "Alias" dwa razy.

Jeżeli w tym zapytaniu pominę tabelę "Alias", to wynik otrzymuję poprawny.

Tak wygląda zapytanie:
  1. SELECT Player.ID,
  2. Alias.Name,
  3. Player.AsAllied,
  4. Player.AsAxis,
  5. Player.TotalTime,
  6. Player.IsBot,
  7. SUM(WeaponData.Kills) AS Kills,
  8. SUM(WeaponData.Deaths) AS Deaths
  9.  
  10. FROM Alias, Player, WeaponData
  11. WHERE WeaponData.Player_ID=Player.ID
  12. AND Alias.Player_ID=Player.ID
  13.  
  14. GROUP BY WeaponData.Player_ID


Jakieś podpowiedzi, dla czego tak się dzieje?
kicaj
DISTINCT po kolumnie zduplikowanej?
leonw
Udało mi się rozwiązać ten problem, choć nie wiem czy prawidłowo.
Zapytanie:
  1. SELECT Player.ID,
  2. (SELECT Alias.Name FROM Alias WHERE Alias.Player_ID=Player.ID GROUP BY Alias.Player_ID) AS Name,
  3. Player.AsAllied,
  4. Player.AsAxis,
  5. Player.TotalTime,
  6. Player.IsBot,
  7. SUM(WeaponData.Kills) AS Kills,
  8. SUM(WeaponData.Deaths) AS Deaths
  9.  
  10. FROM Player, WeaponData
  11.  
  12. WHERE Player.ID=WeaponData.Player_ID
  13.  
  14. GROUP BY WeaponData.Player_ID


wyświetla prawidłowy wynik. Jakoś nie do końca mogę pojąć jak to działa.
W poprzednim zapytaniu wynik "SUM(WeaponData.Kills) AS Kill" był mnożony tyle razy, ile razy dane ID występowało w "Alias". Tj. prawidłowy wynik to 8, jeżeli w "Alias" dane ID występowało 2x, wynik = 16, jeżeli 3x, wynik = 24.

Cytat(kicaj @ 11.02.2017, 13:37:27 ) *
DISTINCT po kolumnie zduplikowanej?


Użycie DISTINCT nie przynosi żadnej zmiany.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.