Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie??
Forum PHP.pl > Forum > Bazy danych > MySQL
one_eddie
Mam baze danych ktora wyglada mniej wiecej tak:

[USERS]
ID – liczba całkowita długa
Name – łańcuch
Pass – łańcuch
State – liczba całkowita

[GAME_LOG]
ID – liczba całkowita długa
GameStartTime – lancuch
GameEndTime – lancuch
FirstUserID – liczba całkowita długa
SecondUserID – liczba całkowita długa
WinnerID – liczba całkowita długa

[USER_MOVE_LOG]
ID – liczba całkowita długa
GameLogID – liczba całkowita długa
UserID – liczba całkowita długa
UserMove – liczba całkowita

teraz chcialbym do tej bazy zrobic nastepujace statystyki:
1. uzytkownicy - ilosc rozegranych gier (posortowane wg najwiekszej ilosci gier)
2. uzytkownicy - uzytkocnicy ktorszy maja najwiecej 0 w tablicy USER_MOVE_LOG w polu UserMove

Jesli ktos mogl by mi pomoc w zbudowaniu odpowiednich zapytan bede wdzieczny :]
FiDO
Ad2.
[sql:1:0ea98815da]
SELECT u.name, COUNT(m.id) ile_zer
FROM users u, user_move_log m
WHERE u.id = m.userid AND m.usermove = 0
GROUP BY u.name
ORDER BY ile_zer DESC
[/sql:1:0ea98815da]

Ad1. jakim polem laczy sie druga tabela z pierwsza? (widze 3 potencjalne)
one_eddie
Cytat
Ad2.
[sql:1:c556cea22d]
SELECT u.name, COUNT(m.id) ile_zer
FROM users u, user_move_log m
WHERE u.id = m.userid AND m.usermove = 0
GROUP BY u.name
ORDER BY ile_zer DESC
[/sql:1:c556cea22d]


Cytat
Ad1. jakim polem laczy sie druga tabela z pierwsza? (widze 3 potencjalne)


Z USERS, pole ID zapisywane jest do FirstUserID lub SecondUserID, ale tez to WinnerID ale ono jest w tym mniej wazne. Z tego co mi napisales widze ze bedzie to hcyba cos takiego:

Ad1.
[sql:1:c556cea22d]SELECT u.name, COUNT(m.id) ile_gier FROM users u, game_log, g WHERE FirstUserID = u.id OR SecondUserID = u.id GROUP BY u.name ORDER BY ile_gier DESC[/sql:1:c556cea22d]

TYlko mam pewne pytanie nie zabardzo rozumiem ta konstrukcje, bycmoze dlatego ze SQL znam tylko z podstawowych kursow.

Jak bys miala jakies adresiki z cieekawymi kursami chetnie przeczytam (moga byc ANG/PL).

Ale jesli mogl bys powiedz mi co robi, np. COUNT(m.id) ile_zer i ,np. from users u (to domyslam sie ze to jakies aliasy, nigdy nie uzywalem sad.gif ).

Reszte rozumiem.

Jak bys mogl opisac co robi to zapytanei bede wdzieczny.
FiDO
Cytat
Z tego co mi napisales widze ze bedzie to hcyba cos takiego:

Predzej tak:
[sql:1:98cb6ac8a3]SELECT u.name, COUNT(g.id) ile_gier FROM users u, game_log g WHERE FirstUserID = u.id OR SecondUserID = u.id GROUP BY u.name ORDER BY ile_gier DESC[/sql:1:98cb6ac8a3]

Cytat
Jak bys miala jakies adresiki z cieekawymi kursami chetnie przeczytam (moga byc ANG/PL).

Raczej bym nie mialA winksmiley.jpg
W zasadzie nie znam dobrego kursu dla srednio zaawansowanych w necie, chociaz mozesz sprobowac www.sqlcourse.com .
Ja wiekszosci trudniejszych rzeczy nauczylEm sie analizujac zapytania podawane tutaj przez niektorych.

Cytat
Ale jesli mogl bys powiedz mi co robi, np. COUNT(m.id) ile_zer i ,np. from users u (to domyslam sie ze to jakies aliasy, nigdy nie uzywalem sad.gif ).

Dokladnie sa to aliasy. W pelnej krasie powinno to wygladac tak:
[sql:1:98cb6ac8a3]SELECT u.name, COUNT(g.id) AS ile_gier FROM users AS u, game_log AS g WHERE FirstUserID = u.id OR SecondUserID = u.id GROUP BY u.name ORDER BY ile_gier DESC[/sql:1:98cb6ac8a3]
ale te AS mozna pomijac.
one_eddie
dzieki za adresik wczesniej go widzialem ale jakos nie sprawdzilem 2 kursu.

A szkoda bo wiedzial bym ze jest cos takiego jak COUNT i ze to dziala tak:
(COUNT returns the total number of values in a given column).

Sorki za "a". Maly blad.

Co do zapytania teraz rozumeim go calkowicie, ujednolicilem go do:

[sql:1:69af1e3fe7]SELECT u.name, COUNT(g.id) ile_gier
FROM users u, game_log g
WHERE g.FirstUserID = u.id OR g.SecondUserID = u.id
GROUP BY u.name
ORDER BY ile_gier DESC[/sql:1:69af1e3fe7]

Chciaz nie ma to wiekszego sencu, bo jak mi sie wydaje aliasy uzywane sa wtedy gdy pola tabel maja jednakowe nazwy, ale moge sie mylic??

Dzieki
FiDO
Cytat
Sorki za "a". Maly blad.

Zdarza sie winksmiley.jpg
Cytat
Chciaz nie ma to wiekszego sencu, bo jak mi sie wydaje aliasy uzywane sa wtedy gdy pola tabel maja jednakowe nazwy, ale moge sie mylic??

Taki jest ich cel, ale ja sie jakos przyzwyczailem, zeby uzywac zawsze przy laczeniach, zebym odrazu po zapytaniu widzial, ktore pole z jakiej tabeli.
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-2025 Invision Power Services, Inc.