Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> php + mysql >>> pobrac i posortowac rekordy
arti1
post 10.12.2003, 09:45:11
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 18.11.2003

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


po temacie mozna pomyslec, ze to niby jest banalne - ale nie wyglada wszystko tak kolorowo:

mam 2 tabele w bazie:

DRUŻYNY z polami: id_druzyny, nazwa, logo
TERMINARZ z polami: id_meczu, nr_kolejki, id_druzyny1, id_druzyny2, gole1, gole2

ZAMIAR MAM TAKI:
stworzyć (oprócz terminarza) u siebie na stronce tabelke z wynikami zawierającą następujące pola: poz., drużyna, mecze, punkty, zw-rem-por, bramki

Chciałbym, aby była ona generowana na podstawie danych z tych dwóch tabel z bazy.
Wiadomo, że np. jesli gole 1 > gole 2 to druzyna1 (rozpoznawana po id) wygrala z druzyna2 i ma 3 punkty (remis 1pkt). To bedzie zliczanie ile dane druzyna ma zwyciestw, remisow i porazek.
Mecze - mysle ze mozna zliczac rekordy dla kazdej druzyny gdzie pole gole nie jest puste.
Punkty - wyliczane na podstawie ilosci wygranych, remisów i przegranych.
Bramki - sumowanie pol z golami.

Tylko jak te warunki zawrzec w zapytaniu do tych dwóch tabel, ktore mam w bazie?
Co wiecej tabela musi bbyc posortowana - u góry druzyna która ma najwiecej punktów, jesli maja tyle samo pktow to ta ktora strzelila wiecej bramek - jesli strzelily tyle samo to ta, ktora wpuscila mniej bramek.

No i to byłoby na tyle...
.... czy są jacyś wymiatacze kodu skłonni pomóc... :?:

Zrzut tabel:
[php:1:cd6f09c3bc]<?php
CREATE TABLE `druzyny` (
`id_druzyny` int(2) NOT NULL auto_increment,
`nazwa` varchar(30) NOT NULL default '',
`logo` varchar(30) NOT NULL default '',
PRIMARY KEY (`id_druzyny`)
) TYPE=MyISAM COMMENT='druzyny' AUTO_INCREMENT=20 ;

INSERT INTO `druzyny` VALUES (1, 'druzyna1', 'logo1.jpg');
INSERT INTO `druzyny` VALUES (2, 'druzyna2', 'logo2.jpg');
INSERT INTO `druzyny` VALUES (5, 'druzyna3', 'logo3.gif');
INSERT INTO `druzyny` VALUES (11, 'druzyna4', 'logo4.jpg');



CREATE TABLE `terminarz` (
`id_meczu` int(3) NOT NULL auto_increment,
`nr_kolejki` int(3) NOT NULL default '0',
`id_druzyny1` int(3) default '0',
`id_druzyny2` int(3) default '0',
`gole1` char(2) default '-',
`gole2` char(2) default '-',
PRIMARY KEY (`id_meczu`)
) TYPE=MyISAM COMMENT='tabela z terminarzem' AUTO_INCREMENT=20 ;

INSERT INTO `terminarz` VALUES (14, 1, 5, 11, '3', '4');
INSERT INTO `terminarz` VALUES (19, 1, 2, 1, '1', '2');
INSERT INTO `terminarz` VALUES (21, 2, 11, 1, '3', '2');
INSERT INTO `terminarz` VALUES (22, 3, 2, 5, '0', '0');
INSERT INTO `terminarz` VALUES (23, 2, 2, 5, '2', '2');
INSERT INTO `terminarz` VALUES (25, 1, 1, 5, '1', '2');
?>[/php:1:cd6f09c3bc]
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
BzikOS
post 10.12.2003, 09:50:26
Post #2





Grupa: Przyjaciele php.pl
Postów: 660
Pomógł: 0
Dołączył: 28.08.2002
Skąd: Starachowice

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


php => Bazy danych
Go to the top of the page
+Quote Post
spenalzo
post 10.12.2003, 10:24:03
Post #3





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


Cytat
Wiadomo, że np. jesli gole 1 > gole 2 to druzyna1 (rozpoznawana po id) wygrala z druzyna2 i ma 3 punkty (remis 1pkt). To bedzie zliczanie ile dane druzyna ma zwyciestw, remisow i porazek.

[sql:1:3718552da8]SELECT d1.nazwa AS druzyna1, d2.nazwa AS druzyna2, CASE WHEN t.gole1>t.gole2 THEN d1.nazwa WHEN t.gole1<t.gole2 THEN d2.nazwa WHEN t.gole1=t.gole2 THEN 'remis' END AS wygrana FROM druzyny d1, druzyny d2, terminarz t[/sql:1:3718552da8]
W polu druzyna1 i druzyna2 wiadomo co będzie, a w polu 'wygrana' powinna być nazwa zespołu, który wygrał lub tekst "remis" jezeli był remis.
Sądze ze to powinno dziaąc, ale nie wiem jak z tą cześcią gdzie jest CASE smile.gif
Cytat
Mecze - mysle ze mozna zliczac rekordy dla kazdej druzyny gdzie pole gole nie jest puste.

Tutaj nie mam pewnosci, ale spróbuj to:
[sql:1:3718552da8]SELECT count(*) FROM druzyna d, terminarz t WHERE t.gole1>0 AND t.gole2>0 AND (t.id_druzyny1=d.id_druzyny OR t.id_druzyny2=d.id_druzyny) GROUP BY d.nazwa[/sql:1:3718552da8]
Nie wiem czy to jest dobrze, ale spróbuj - jakby nie działało, to powiedz, co zwraca funkcja [manual:3718552da8]mysql_error[/manual:3718552da8].

Cytat
Bramki - sumowanie pol z golami.

Nie wiem czy chodzi o sumowanie wszystkich bramek czy dla danej druzyny
a) su,a wszystkich goli
[sql:1:3718552da8]SELECT SUM(gole1) AS suma1, SUM(gole2) AS suma2 FROM terminarz[/sql:1:3718552da8]
a) wszystkie druzyny wraz z suma goli
[sql:1:3718552da8]SELECT SUM(t.gole1) AS suma1, SUM(t.gole2) AS suma2, d.nazwa AS nazwa FROM terminarz t, druzyny d WHERE t.id_druzyny1=d.id_druzyny OR t.id_druzyny2=d.id_druzyny[/sql:1:3718552da8]
Sądze że jednak coś jest tutaj pomieszane, ale powinno Cie naprowadzić.

Sam się nadal uczę, więc pewnie coś bedzie źle, ale licze że ktoś poprawi winksmiley.jpg ewentualne błedy.
Go to the top of the page
+Quote Post
arti1
post 10.12.2003, 20:10:47
Post #4





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 18.11.2003

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


spenalzo >> dzieki bardzo
Przyznam szczerze, że zapytania (jak dla mnie) są dosyc skomplikowane i bede musial na spokojnie do tego usiasc... niestety dopiero w weekend bo w piatek mam koło na uczelni sad.gif
Więc spróbuje się w tym połapac, a w razie czego dam znać.
PZDR i dzieki bardzo za podpowiedz.

Cytat
Nie wiem czy chodzi o sumowanie wszystkich bramek czy dla danej druzyny

Chodziło o to, że przy każdej drużynie ma być napisane ile goli strzelila, a po mysliku ile wpusciła (np. 22-14).
Go to the top of the page
+Quote Post
arti1
post 22.12.2003, 00:37:41
Post #5





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 18.11.2003

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


ok, poki co poradzilem sobie za pomoca tablic
a nad tymi zapytaniami do MySQLa musze jeszcze troche posiedziec aby wykumac jak to zrobic...
pzdr 4 u all biggrin.gif no i merry christmas tongue.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 20.07.2025 - 01:53