wyświetlenie 3 największych wartości...

0

otóż mam bazę danych z filmikami, a chcę stworzyć taki moduł, który wyświetli 3 największe ilości oglądnięć, a obok tytuł tych filmików. wszystkie moje próby zakańczały się niepowodzeniem.

Bardzo proszę o pomoc bo nigdzie nie mogę znaleźć podobnego problemu :)

0
siwy16l napisał(a)

otóż mam bazę danych z filmikami, a chcę stworzyć taki moduł, który wyświetli 3 największe ilości oglądnięć, a obok tytuł tych filmików. wszystkie moje próby zakańczały się niepowodzeniem.

Bardzo proszę o pomoc bo nigdzie nie mogę znaleźć podobnego problemu :)

Różne bazy danych mają to różnie zrealizowane. Na przykład w interbase możesz po "order by" dać ograniczenie liczby zwróconych wierszy przez dodanie "raws 1 to 3".

0

a mógłby ktoś podać przykład wyciągnięcia z bazy tylko title i number_of_views 3 największych wartości z number_of_views? byłbym bardzo wdzięczny :)
i przepraszam że wyrażam się nie zbyt jasno bo jestem po ciężkiej nocy :)

0

W SQL:

SELECT `title`,`number_of_views`
FROM `tabela` 
ORDER BY `number_of_views` DESC LIMIT 3
0

szczere wielkie dzięki naprawde chłopaki :) ale dalej mam problem... może ktoś zobaczy jakiś błąd

/* Łączenie i wybranie bazy */
$link = mysql_connect("localhost", "xxx", "xxxx")
    or die ("Nie mozna sie polaczyc");
print ("Polaczenie nawiazane");
mysql_select_db ("filmy") or die ("Nie mozna wybrać bazy danych");

$wynik = mysql_query("SELECT 'title'  , 'number_of_views'
FROM 'h8q1_hwdvidsvideos' ORDER BY 'number_of_views' DESC LIMIT 3")
or die('Błąd zapytania');

i jeszcze jedno pytanie... jak to wydrukować na stronie?????

ps. mogłem już dawno zajrzeć na to forum bo od dwóch tygodni się z tym męcze :> (moje początki z mysql- nie śmiejcie sie :))

0

już wiem! dzięki za wszystko!

a to dla tych co mają podobny problem

$query = "SELECT `title`,`number_of_views`
FROM `filmy`
ORDER BY `winpot` DESC LIMIT 3";
$result = mysql_query ($query) or die ("Zapytanie zakończone niepowodzeniem");

/* Wyświetlenie wyników w HTML */
print "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
   print "\t<tr>\n";
   foreach ($line as $col_value) { 
       print "\t\t<td>$col_value</td>\n"; 
   }
   print "\t</tr>\n";
}
print "</table>\n";

/* Zwalnianie pamięci */
mysql_free_result($result); 

/* Rozłączanie */
mysql_close($link);
0

Hej oto moj sposob, daje przykladowy kodzik z baza i wszystkim:

create table TESTOWAfilm(
id		int primary key identity(1,1),
name	varchar(255),
odslon	int
)

insert into TESTOWAfilm values ('asd1', 5);
insert into TESTOWAfilm values ('asd2', 15);
insert into TESTOWAfilm values ('asd3', 45);
insert into TESTOWAfilm values ('asd2', 3);
insert into TESTOWAfilm values ('asd3', 65);
insert into TESTOWAfilm values ('asd3', 50);

select top 3 * from TESTOWAfilm
group by id, name, odslon
order by odslon desc

drop table TESTOWAfilm;

Mysle ze przyjemniejszy zapis

0

Ale (jak w innym temacie jakiś czas temu się okazało ;) ) top nie nalezy do standardu języka, MSSQL je obsluguje, ale MySQL na przykład juz nie. Dlatego lepiej użyć limit.

0

tzn co ? Sql Server 2005 pociągnie "top'a" natomiast serwer po stronie www moze z tym miec problem tak ? zapamietam sobie. ;-P jesli dobrze zrozumialem pozna godzina ;-)

0

To zależy od tego jaką bazę masz na serwerze. Jeśli tam też stoi MSSQL to nie będzie problemu, ale jeśli tam będzie jakaś inna baza (np. MySQL) to takie zapytanie nie przejdzie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1