Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Циклическая выборка данных


Автор: AtomoS 3.1.2010, 06:34
Имеется таблица character_vote и страница vote_top.php
Код

-- ----------------------------
-- Table structure for character_vote
-- ----------------------------
CREATE TABLE `character_vote` (
  `id` int(11) NOT NULL auto_increment,
  `char_name` varchar(255) character set utf8 NOT NULL,
  `date` varchar(255) character set utf8 NOT NULL,
  `ip` char(15) character set utf8 default NULL,
  PRIMARY KEY  (`id`));

-- ----------------------------
-- Records 
-- ----------------------------
INSERT INTO `character_vote` VALUES ('1', 'AtomoS', '2009-12-16', '127.0.0.1');
INSERT INTO `character_vote` VALUES ('2', 'MettcoForte', '2009-12-28', '127.0.0.1');
INSERT INTO `character_vote` VALUES ('3', 'MettcoForte', '2009-12-05', '127.0.0.1');
INSERT INTO `character_vote` VALUES ('4', 'JoJoLoLo', '2009-12-02', '127.0.0.1');
INSERT INTO `character_vote` VALUES ('5', 'JoJoLoLo', '2009-12-24', '127.0.0.1');
INSERT INTO `character_vote` VALUES ('6', 'JoJoLoLo', '2009-12-12', '127.0.0.1');
INSERT INTO `character_vote` VALUES ('7', 'JoJoLoLo', '2009-12-14', '127.0.0.1');
INSERT INTO `character_vote` VALUES ('8', 'JoJoLoLo', '2009-12-13', '127.0.0.1');
INSERT INTO `character_vote` VALUES ('9', 'MettcoForte', '2009-12-24', '127.0.0.1');
INSERT INTO `character_vote` VALUES ('10', 'AtomoS', '2009-12-26', '127.0.0.1');
INSERT INTO `character_vote` VALUES ('11', 'AtomoS', '2009-12-22', '127.0.0.1');
INSERT INTO `character_vote` VALUES ('12', 'AtomoS', '2009-12-21', '127.0.0.1');
INSERT INTO `character_vote` VALUES ('13', 'AtomoS', '2009-12-17', '127.0.0.1');
INSERT INTO `character_vote` VALUES ('14', 'AtomoS', '2009-12-03', '127.0.0.1');
INSERT INTO `character_vote` VALUES ('15', 'MettcoForte', '2008-12-12', '127.0.0.1');
INSERT INTO `character_vote` VALUES ('16', 'Fuck', '2008-13-13', '127.0.0.1');

Код

<?

$db = mysql_connect("localhost", "root", "root");
mysql_select_db ("test");

mysql_query("SET NAMES cp1251");

$i = 1; 
$r = 255;

$page_result = "<tr>
<th align=center>Место</th>
<th align=center>Ник</th>
<th align=center>Количество голосов</th>
</tr>";

$page_sql = "SELECT DISTINCT char_name FROM character_vote;";
$sql = mysql_query($page_sql);

while ( $row=mysql_fetch_row($sql) )
{
    $page_sql2 = "SELECT count(*) FROM character_vote WHERE char_name='$row[0]' LIMIT 10;";
    $link2 = mysql_query($page_sql2);
    $vote = mysql_fetch_row($link2);
    
    $page_result .= "<tr>
    <td align=center>$i</span></td>
    <td align=center>$row[0]</td>
    <td align=center>".$vote[0]."</td>
    </tr>";
    $i++;
    $r -= 0;

};
?>

<table width='100%' border='0' cellspacing='0' cellpadding='0'>
<? echo "$page_result"; ?>
</table>


Моя задача составить Топ - Голосовавших.

Странича будет состоять из 3х столбцов: Место, Ник, Кол-во Голосов.
Места распределяются по числу голосов того или иного ника, чем больше голосов, тем выше место.
Количество голосов определяется подсчётом строк, в кот. соджержится тот или иной ник.

Данный скрипт работает, но не очень корректно, не могу сделать нормальную сортировку.

Поможите?  smile 

Автор: ТоляМБА 3.1.2010, 08:23
Цитата(AtomoS @  3.1.2010,  08:34 Найти цитируемый пост)
Места распределяются по числу голосов того или иного ника, чем больше голосов, тем выше место.Количество голосов определяется подсчётом строк, в кот. соджержится тот или иной ник.


AtomoS, выполни в phpmyadmin запрос

Код
Select char_name, count(char_name) as c
From character_vote
Group by char_name
Order by 2 DESC

оно?


Автор: AtomoS 3.1.2010, 09:22
ТоляМБА, ты гений. спасибо. как бы тебе репки добавить(
_
неподскажешт ресурс, где о таких сложных запросах можно почитать?

Автор: chip_and_dayl 3.1.2010, 11:57
AtomoS
Ты еще не видел сложных запросов  smile  Можешь глянуть http://books.kulichki.com/data/sql/sql1/

Автор: ТоляМБА 3.1.2010, 12:30
AtomoS, гугли "Понимание SQL Мартин Грабер" (Understanding SQL Martin Gruber) - есть и на ресурсах есть и книги в электронном виде. Но надо ещё учитывать что у каждой СУБД свой диалект SQL, поэтому после понимания основ sql нужно будет ковырять ещё ту СУБД с которой будешь работать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)