Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Lista przebojow - w jaki sposob generowac zapytanie
Forum PHP.pl > Forum > Bazy danych > MySQL
Kotovitsch
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
Dudziński
A nie lepiej użyć UPDATE ?
webdice
Pokaż strukturę tabeli i napisz jaki efekt chcesz dokładnie osiągnąć.
php programmer
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,
Kotovitsch
Dziekuje za odpowiedzi,
mysle, ze niedokladnie opisalem moj problem

tak wyglada tabela


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

Pjotr
prond
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.
php programmer
  1. SELECT miejsce FROM tabela WHERE utwór = 'wybrany utwór' ODER BY week DESC LIMIT 10
Kotovitsch
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:


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


Prosze o pomoc,

Pjotr
pabgol
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.
Kotovitsch
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.
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.