Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapytanie sumujące z ograniczeniami
Aztech
post
Post #1





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Chciałbym z następującej tabelki:
| TournID | PersonID | Score | Games |
Wybrać z ostatnich turniejów tyle wpisów, aby liczba gier była < 100.
Stworzyłem już zapytania z SUM na wszytkie możliwe sposoby, ale nie mam zielonego pojęcia jak skonstruować pozostałe warunki (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Próbowałem również kombinować w następujący sposób
  1. SELECT * , @t := @t + Gry
  2. FROM `listarank` AS l
  3. WHERE @t <100
  4. ORDER BY turnid DESC

Ale również bez sukcesu

Ten post edytował Aztech 18.10.2007, 23:19:23
Go to the top of the page
+Quote Post
prgTW
post
Post #2





Grupa: Zarejestrowani
Postów: 62
Pomógł: 3
Dołączył: 10.09.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


- Jakiego typu jest kolumna "Games" (SET [OF] ?)
- Czy jeden wpis (turniej) dotyczy jednej gry - pole "Games" np varchar, int, enum z jedna wartoscia, czy w polu Games masz gry wymienione np. po przecinku i chcesz policzyc turnieje ktore dotycza nie wiecej niz 100 gier?

edit: Dorzuc kilka przykladowych wierszy z Twojej tabeli

Moze o to Ci chodzi?
  1. SELECT * FROM `listarank` AS l ORDER BY `turnid` DESC LIMIT 99


Ten post edytował prgTW 18.10.2007, 23:50:30
Go to the top of the page
+Quote Post
Aztech
post
Post #3





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


@prgTW: zdecydowanie nie o to mi chodzi
Przykładowe dane:
1 10 1500 6
1 12 1460 6
1 13 1200 5
1 26 1000 3
2 10 1436 6
2 13 1564 6
...
55 10 1342 5
55 13 1542 5
55 14 1321 4
Go to the top of the page
+Quote Post
mwojcik
post
Post #4





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 22.07.2007

Ostrzeżenie: (0%)
-----


Podaj tez jakie chcesz wynikowe rekordy otrzymac, bo nie wiem za bardzo o co ci chodzi w pierwszym poscie.
Go to the top of the page
+Quote Post
prgTW
post
Post #5





Grupa: Zarejestrowani
Postów: 62
Pomógł: 3
Dołączył: 10.09.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat
Wybrać z ostatnich turniejów tyle wpisów, aby liczba gier była < 100.

Gra dla turnieju jest zawsze rowna 1 (zawsze <100), zatem jesli chodzi Ci o cos innego tzn. ze nie umiesz tego napisac a prosisz o pomoc (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Logicznie rzecz biorac z Twojego postu wynika, ze LIMIT jest tym czego szukasz :/
Go to the top of the page
+Quote Post
Aztech
post
Post #6





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Widać niezbyt precyzyjnie się wyraziłem.
Założenia:
- im większe ID turnieju, tym nowszy to turniej
- tabelkę należy przeglądać od tyłu, czyli od najnowszego turnieju
- należy wybrać dla danej osoby taki zbiór turniejów, w których dana osoba grała, poczynając od najnowszego, aby suma gier dla tych turniejów była nie większa niż 100 (poprzednio nieprecyzyjnie napisałem, że liczna gier).
- rezultatem zapytania może by suma gier (Games) oraz uzyskanych punktów (Scores) dla danego gracza lub też lista gier spełniających w/w warunki
Poniżej przykład ale dla sumy nie większej niż 10 (dodałem rekord ID aby łatwiej się analizowało)
Rekord ID | TournID | PersonID | Score | Games
1 1 10 1500 6
2 1 20 1460 6
3 1 30 1200 5
4 2 10 1436 6
5 2 20 1564 6
6 2 50 950 3
7 3 10 1600 3
8 3 30 1450 4
9 3 40 1200 4
10 3 50 700 2
11 4 10 300 1
12 4 20 600 2
13 4 30 700 2
14 4 40 800 2
15 5 50 700 2
16 5 40 1200 4
17 5 50 1300 4
Dla gracza o id 50 wynik zapytania powinien być następujący
PersonID Sum(Score) Sum(Games)
5 2700 8
lub lista wybranych rekordów o ID
17, 15, 10
Gdyby rekord o ID 6 wyglądał następująco
6 2 50 950 2
również by się załapał ponieważ suma gier (Games) wynosiłaby wtedy 10.
Mam nadzieję, że to będzie w miarę czytelne

Ten post edytował Aztech 19.10.2007, 23:20:25
Go to the top of the page
+Quote Post
prgTW
post
Post #7





Grupa: Zarejestrowani
Postów: 62
Pomógł: 3
Dołączył: 10.09.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Aaa no to teraz wszystko jak dla mnie jasne. Pisz procedure/funkcje, z kursora zczytuj kolejne wiersze dopoki beda spelniac warunek

btw: nie prosciej bylo napisac "chce zczytywac kolejne wiersze z tabeli posortowanej malejaco po ID turnieju jednoczesnie liczac sume wartosci w kolumny Games dopoki suma ta bedzie <100" ... grunt to umiec zdefiniowac problem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował prgTW 19.10.2007, 23:38:32
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 13:22