Vytažení několika záznamů z tabulky s nejvyšší hodnotou – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vytažení několika záznamů z tabulky s nejvyšší hodnotou – MySQL – Fórum – Programujte.comVytažení několika záznamů z tabulky s nejvyšší hodnotou – MySQL – Fórum – Programujte.com

 

Marek Štafl0
Stálý člen
22. 6. 2006   #1
-
0
-

Tento script:
?



<?php
$server_spojeni = @mysql_pconnect("localhost", "root", "");
if (!$server_spojeni) {
$error_mess = "Nepoda?ilo se p?ipojit k datab?zov?mu serveru!";
} else {
$databaze_spojeni = @mysql_select_db("main");
if (!$databaze_spojeni) {
$error_mess = "Nelze naj?t po?adovanou datab?zi!";
} else {
$zaznam[0] = "";
for ($i = 0; $i < 20; $i++) {
if ($zaznam[0] == "") {
$dotaz = 'SELECT MAX(ACCESS) FROM counts';
} else {
$dotaz = 'SELECT MAX(ACCESS) FROM counts WHERE ACCESS < '.$zaznam[0].'';
}
$res = mysql_query($dotaz);
$zaznam = mysql_fetch_array($res);
$dotaz = 'SELECT * FROM counts WHERE ACCESS = '.$zaznam[0].'';
$res = mysql_query($dotaz);
$j = -1;
while ($vysledek = mysql_fetch_array($res)) {
echo $vysledek["ID"]." | ".$vysledek["DAY"]." | ".$vysledek["DAYNAME"]." | ".$vysledek["MONTH"]." | ".$vysledek["YEAR"]." | ".$vysledek["ACCESS"]." | ".$vysledek["SITEWIEV"]."<br>";
$j++;
}
$i = $i - $j;
}
}
}
?>
?
mi vrac? toto:
2 | 24 | 1 | 4 | 2006 | 180 | 516
1 | 23 | 0 | 4 | 2006 | 60 | 227
9 | 1 | 1 | 5 | 2006 | 17 | 188
5 | 27 | 4 | 4 | 2006 | 15 | 204
6 | 28 | 5 | 4 | 2006 | 8 | 112
14 | 4 | 4 | 5 | 2006 | 8 | 54
19 | 21 | 0 | 5 | 2006 | 8 | 118
3 | 25 | 2 | 4 | 2006 | 7 | 28
12 | 2 | 2 | 5 | 2006 | 6 | 195
16 | 6 | 6 | 5 | 2006 | 6 | 54
13 | 3 | 3 | 5 | 2006 | 5 | 42
4 | 26 | 3 | 4 | 2006 | 4 | 43
20 | 23 | 2 | 5 | 2006 | 4 | 45
17 | 7 | 0 | 5 | 2006 | 3 | 44
7 | 29 | 6 | 4 | 2006 | 2 | 7
8 | 30 | 0 | 4 | 2006 | 2 | 11
15 | 5 | 5 | 5 | 2006 | 2 | 260
18 | 8 | 1 | 5 | 2006 | 2 | 47
21 | 31 | 3 | 5 | 2006 | 1 | 5
22 | 2 | 5 | 6 | 2006 | 1 | 3
23 | 18 | 0 | 6 | 2006 | 1 | 18
10 | 1 | 0 | 1 | 2006 | 0 | 1
11 | 1 | 3 | 2 | 2006 | 0 | 1
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in f:appservwwwtempmax.php on line 30
2 | 24 | 1 | 4 | 2006 | 180 | 516
1 | 23 | 0 | 4 | 2006 | 60 | 227
9 | 1 | 1 | 5 | 2006 | 17 | 188
5 | 27 | 4 | 4 | 2006 | 15 | 204
6 | 28 | 5 | 4 | 2006 | 8 | 112
14 | 4 | 4 | 5 | 2006 | 8 | 54
19 | 21 | 0 | 5 | 2006 | 8 | 118
3 | 25 | 2 | 4 | 2006 | 7 | 28
12 | 2 | 2 | 5 | 2006 | 6 | 195
16 | 6 | 6 | 5 | 2006 | 6 | 54
13 | 3 | 3 | 5 | 2006 | 5 | 42
4 | 26 | 3 | 4 | 2006 | 4 | 43
20 | 23 | 2 | 5 | 2006 | 4 | 45
17 | 7 | 0 | 5 | 2006 | 3 | 44
7 | 29 | 6 | 4 | 2006 | 2 | 7
8 | 30 | 0 | 4 | 2006 | 2 | 11
15 | 5 | 5 | 5 | 2006 | 2 | 260
18 | 8 | 1 | 5 | 2006 | 2 | 47
21 | 31 | 3 | 5 | 2006 | 1 | 5
22 | 2 | 5 | 6 | 2006 | 1 | 3
23 | 18 | 0 | 6 | 2006 | 1 | 18
10 | 1 | 0 | 1 | 2006 | 0 | 1
11 | 1 | 3 | 2 | 2006 | 0 | 1
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in f:appservwwwtempmax.php on line 30
2 | 24 | 1 | 4 | 2006 | 180 | 516
1 | 23 | 0 | 4 | 2006 | 60 | 227
9 | 1 | 1 | 5 | 2006 | 17 | 188
5 | 27 | 4 | 4 | 2006 | 15 | 204
6 | 28 | 5 | 4 | 2006 | 8 | 112
14 | 4 | 4 | 5 | 2006 | 8 | 54
19 | 21 | 0 | 5 | 2006 | 8 | 118
3 | 25 | 2 | 4 | 2006 | 7 | 28
12 | 2 | 2 | 5 | 2006 | 6 | 195
16 | 6 | 6 | 5 | 2006 | 6 | 54
13 | 3 | 3 | 5 | 2006 | 5 | 42
4 | 26 | 3 | 4 | 2006 | 4 | 43
20 | 23 | 2 | 5 | 2006 | 4 | 45
17 | 7 | 0 | 5 | 2006 | 3 | 44
7 | 29 | 6 | 4 | 2006 | 2 | 7
8 | 30 | 0 | 4 | 2006 | 2 | 11
15 | 5 | 5 | 5 | 2006 | 2 | 260
18 | 8 | 1 | 5 | 2006 | 2 | 47
21 | 31 | 3 | 5 | 2006 | 1 | 5
22 | 2 | 5 | 6 | 2006 | 1 | 3
23 | 18 | 0 | 6 | 2006 | 1 | 18
10 | 1 | 0 | 1 | 2006 | 0 | 1
11 | 1 | 3 | 2 | 2006 | 0 | 1
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in f:appservwwwtempmax.php on line 30
2 | 24 | 1 | 4 | 2006 | 180 | 516
1 | 23 | 0 | 4 | 2006 | 60 | 227
9 | 1 | 1 | 5 | 2006 | 17 | 188
5 | 27 | 4 | 4 | 2006 | 15 | 204
6 | 28 | 5 | 4 | 2006 | 8 | 112
14 | 4 | 4 | 5 | 2006 | 8 | 54
19 | 21 | 0 | 5 | 2006 | 8 | 118
3 | 25 | 2 | 4 | 2006 | 7 | 28
12 | 2 | 2 | 5 | 2006 | 6 | 195
16 | 6 | 6 | 5 | 2006 | 6 | 54
13 | 3 | 3 | 5 | 2006 | 5 | 42

V tabulce je 23 z?znam?, proto je na ka?d?m 24-t?m ??dku ta chyba.
Jen?e j? pot?ebuju vypsat pouze 20 ??dk? s nejvy??? hodnotou ve sloupci ACCESS. Sloupec ACCESS je ten p?edposledn?.
Jsem v konc?ch, vůbec nev?m, kde je chyba ?:((?
Dok?zal by to n?kdo rozlu?tit?

Nahlásit jako SPAM
IP: ...–
Dominik Fran0
Návštěvník
23. 6. 2006   #2
-
0
-

A co si to seřadit podle sloupce ACCES a dát LIMIT 0,20 - to ti vypíše jen 20 hodnot od řádku 0! :)
Takže si to stačí jen seřadit

Nahlásit jako SPAM
IP: ...–
AMD Opteron 1800MHz@2450MHz; 2x512MB Corsair @ 3T; ATI X300; Zdroj Thermaltake Silent PurePower W0050 Fanless 350W;Seagate 160GB; Western Digital 40GB; PHP+MYSQL, HTML+CSS,C++,JAVA,Python(začínám)
Marek Štafl0
Stálý člen
23. 6. 2006   #3
-
0
-

J? pr?v? s datab?zemi moc pracovat neum?m, proto se sna??m ty slo?it?j?? v?ci (aspo? pro m? slo?it?j??) do?e?it pomoc? PHP (ale i v PHP jsem naprost? za??te?n?k). Ale ve?er, ne? jsem usnul, tak jsem na to p?i?el:
?



<?php
$server_spojeni = @mysql_pconnect("localhost", "root", "");
if (!$server_spojeni) {
$error_mess = "Nepoda?ilo se p?ipojit k datab?zov?mu serveru!";
} else {
$databaze_spojeni = @mysql_select_db("main");
if (!$databaze_spojeni) {
$error_mess = "Nelze naj?t po?adovanou datab?zi!";
} else {
$zaznam[0] = "";
for ($i = 0; $i < 20; $i++) {
if ($zaznam[0] == "") {
$dotaz = 'SELECT MAX(ACCESS) FROM counts';
} else {
$dotaz = 'SELECT MAX(ACCESS) FROM counts WHERE ACCESS < '.$zaznam[0].'';
}
$res = mysql_query($dotaz);
$zaznam = mysql_fetch_array($res);
$dotaz = 'SELECT * FROM counts WHERE ACCESS = '.$zaznam[0].'';
$res = mysql_query($dotaz);
$j = -1;
while ($vysledek = mysql_fetch_array($res)) {
echo $vysledek["ID"]." | ".$vysledek["DAY"]." | ".$vysledek["DAYNAME"]." | ".$vysledek["MONTH"]." | ".$vysledek["YEAR"]." | ".$vysledek["ACCESS"]." | ".$vysledek["SITEWIEV"]." | ".$i."<br>";
$i++;
}
$i--;
}
}
}
?>
?
Takhle to funguje, jenom je?t? o?et?it ten cyklus while, proto?e ten nepo??t? s po?tem 20, tak?e kdy? m? t?eba 19-t? v?sledek hodnotu 1, ale s hodnotou 1 je tam je?t? dal??ch 5 ??dk?, vr?t? mi to 23 v?sledk?. Ale to u? nebude takov? probl?m. Snad ?:ok:?

Nahlásit jako SPAM
IP: ...–
Dominik Fran0
Návštěvník
23. 6. 2006   #4
-
0
-

Hele pokud ti jde čistě jen o těch 20 hodnot seřazených podle sloupce ACCES, tak takto:
akorát nevim zda to chceš vzestupně či sestupně, takže buď to DESC smaž, nebo ho tam nech



$res = mysql_query("SELECT * FROM counts ORDER BY acces DESC LIMIT 0,20");
while ($vysledek = mysql_fetch_array($res)):


echo $vysledek["ID"]." | ".$vysledek["DAY"]." | ".$vysledek["DAYNAME"]." | ".$vysledek["MONTH"]." | ".$vysledek["YEAR"]." | ".$vysledek["ACCESS"]." | ".$vysledek["SITEWIEV"]." | ".$i."<br>";

i++;
endwhile;

snad to bude fungovat, ted docela chvátám, tak nevím, zda to je vůbec dobře..
ale je to rozhodně rychlejší než to tvoje, kde uděláš 20*2 požadavků na databázi, to je šílený! :)

takhle to máš seřazený podle ACCES, vybere ti to jen prvních 20 záznamů a hotovo...

Nahlásit jako SPAM
IP: ...–
AMD Opteron 1800MHz@2450MHz; 2x512MB Corsair @ 3T; ATI X300; Zdroj Thermaltake Silent PurePower W0050 Fanless 350W;Seagate 160GB; Western Digital 40GB; PHP+MYSQL, HTML+CSS,C++,JAVA,Python(začínám)
Marek Štafl0
Stálý člen
23. 6. 2006   #5
-
0
-

Funguje to!
Díky moc!
Asi se tím databázím budu muset víc věnovat :ok:

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý