Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Lista przebojow - w jaki sposob generowac zapytanie
Kotovitsch
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 28.11.2007

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


szanowni czytelnicy,

zwracam sie z prosba o pomoc,
w MySQL przechwuje dane o pozycjach na liscie przebojow,
ktore sa tygodniowo aktualizowane - przyklad

Moj problem polega na tym, ze nie wiem jak uzyskac zapytanie,
ktore bedzie generowac nowa tabele, w ktorej znajda sie wyniki poszczegolnych tygodni -
cos jak best of ostatnich osmiu notowan, najpopulaniejsze pozycje

np.1miejsce Wykonawca_A 4x pozycja1, 3x pozycja2, raz pozycja4
2miejsce Wykonawca_B 3x pozycja1, 3x pozycja2, raz pozycja4 itd

prosze o pomoc,

Pjotr
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Dudziński
post
Post #2





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.10.2007
Skąd: Częstochowa

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


A nie lepiej użyć UPDATE ?
Go to the top of the page
+Quote Post
webdice
post
Post #3


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Pokaż strukturę tabeli i napisz jaki efekt chcesz dokładnie osiągnąć.
Go to the top of the page
+Quote Post
php programmer
post
Post #4





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


Nową tabele?
Czyli po roku miał byś 4.5*12 tabel w bazie ?

Tak się nie robi, dajesz pole timestamp,
i robisz odpowiedniego SELECTa po tym polu,
Go to the top of the page
+Quote Post
Kotovitsch
post
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 28.11.2007

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


Dziekuje za odpowiedzi,
mysle, ze niedokladnie opisalem moj problem

tak wyglada tabela
(IMG:http://hitparada.familok.info/tabela.jpg)

z tej tabeli chce wyciagnac 10 pozycje, ktore odzwierciedla zajete pozycje od czasu wpisow na liste.

Pjotr
Go to the top of the page
+Quote Post
prond
post
Post #6





Grupa: Zarejestrowani
Postów: 254
Pomógł: 10
Dołączył: 8.11.2006
Skąd: Warszawa

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


Jesli dobrze rozumiem to potrzebujesz cos ala snaphot. Mozesz to zrobic tak:
  1. CREATE TABLE przeboje_2007_11 AS SELECT * FROM przeboje


Moim zdanien powinienes jednak zmodyfikowac strukture bazy danych, tak aby w jednej tabeli trzymac utwory, a w drugiej historie pozycji na liscie przebojow:
| id_utowru | id_listy | miejsce |, gdzie listy tworzysz i opisujesz w osobnej tabeli.
Go to the top of the page
+Quote Post
php programmer
post
Post #7





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


  1. SELECT miejsce FROM tabela WHERE utwór = 'wybrany utwór' ODER BY week DESC LIMIT 10


Ten post edytował php programmer 28.11.2007, 13:57:02
Go to the top of the page
+Quote Post
Kotovitsch
post
Post #8





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 28.11.2007

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


Szanowni koledzy,

dziekuje bardzo za okazana pomoc,
niestety, probujac roznego rodzaju zapytania, nie otrzymuje oczekiwanego efektu.
SELECT wykonawca, platz , COUNT(*)FROM hitparada GROUP BY utwor ORDER BY `COUNT( * )` desc

mysle, ze powinienem zmienic forme zapytania, i uzyc SUM,
aby policzyc wartosci pola PLATZ, ktore odpowiada pozycji na liscie przebojow,
im mniejsza wartosc, tym wyzej jest dany utwor, lub wykonawca notowany,
i nastepnie sortowac od najmniejszej do najwiekszej wartosci.

jesli ktos jest chetny, i pomoze mi wygenerowac zapytanie, to juz teraz dziekuje,
a ja czytam dalej w HELP do mysql.

pozdrowienia,

Pjotr

Niestety,

zapytanie typu_

SELECT wykonawca, utwor , SUM(platz )FROM hitparada GROUP BY wykonawca ORDER BY `SUM( platz )` ASC

rowniez mnie nie zadowala, gdyz wykonawca, ktory jest tylko jeden jedyny raz notowany na 1 miejscu, jest rowniez w rocznym podsumowaniu zwyciezca, a powinno byc tak, ze ten, ktory najczesciej byl na pozycji 1, ten jest w rocznym zestawieniu na pozycji pierwszej.

No to musze dalej czytac....

Pjotr

OK. zmienilem strukture danych,
i wygenerowalem nowa tebele:
(IMG:http://hitparada.familok.info/tabela1.jpg)

w jaki sposob moge zapytac, ile razy utwor ABC byl na pozycji 1, 2, 3, 4....itd


Prosze o pomoc,

Pjotr
Go to the top of the page
+Quote Post
pabgol
post
Post #9





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 29.11.2007

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


Cytat(Kotovitsch @ 29.11.2007, 11:57:48 ) *
w jaki sposob moge zapytac, ile razy utwor ABC byl na pozycji 1, 2, 3, 4....itd


Przede wszystkim zrób osobną tabelę dla utworów. Każdy otwór będzie miał uniklany identyfikator. W tabeli 'przeboje_2007' powinien być przechowywany właśnie uniklany identyfikator rekordu.
Struktura tabeli utwory: ID_utworu, nazwa_utworu, wykonawca_utworu

Potem w tabeli przeboje_2007 umieszczacz zamiast nazwy utworu i wykonawcy - ID utworu z tabeli utwory.
Go to the top of the page
+Quote Post
Kotovitsch
post
Post #10





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 28.11.2007

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


teraz mam juz przygotowane zapytanie do tabeli przeboje_2007

$wynik=mysql_query ("SELECT wykonawca,utwor COUNT(*) FROM przeboje_2007 WHERE platz=1 GROUP BY wykonawca;") or
die ("blad w pytaniu");
print "<table cellpadding=5 border=1>";
print "<tr><td><center><b>wykonawca</b></center><td><b>utwor</b></td><td><center><b>tygodni na 1 miejscu</b></center></td>\n";

while ($rekord=mysql_fetch_assoc ($wynik)) {
$wykonawca=$rekord['wykonawca'];
$utwor=$rekord['utwor'];

print "<tr><td>$wykonawca</td><td>$utwor</td><td>JAK_WPROWADZIC_DANE?</td>\n";
}
print "</table>";

ktore niestety nie dziala poprawnie, bo niewiem, jak wpisac wynik COUNT(*) do tabeli.
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: 25.09.2025 - 23:59