Всем привет! У меня есть две таблицы golos и photo..... Мне нужно чтобы записи из таблицы photo сортировались по количеству голосов.... Вот код страницы вывода результатов : PHP: <table width="592" border="0" align="center"> <tr> <td><div align="center"> <h3>Рейтинг</h3> <table width="450" border="0" cellspacing="1"> <?php require_once ("config.php"); mysql_query("SET NAMES 'utf8'"); // Выбираем из базы данных фотографии $query = "SELECT * FROM photo ORDER BY id DESC"; $prt = mysql_query($query); if(!$prt) { echo "error : ".mysql_error()."<br>"; echo $query; puterror("Ошибка при обращении к блоку Фотогалерея"); } echo'<tr><td bgcolor=#83ABEF>Имя</td><td bgcolor=#83ABEF>голосов</td></tr>'; while($par = mysql_fetch_array($prt)) { $result = mysql_query("SELECT id_golos FROM golos WHERE id_golos=".$par['id'].""); $num_rows = mysql_num_rows($result); echo "<tr><td bgcolor=#E0EAFB><a href=reiting.php?id=".$par['id'].">".$par['name']."</a></td><td bgcolor=#E0EAFB><b>".$num_rows."</b></td></tr>"; } ?> </table> Вот таблица photo: [sql] CREATE TABLE IF NOT EXISTS `photo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` tinytext NOT NULL, `img` tinytext NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=16 ; -- -- Dumping data for table `photo` -- INSERT INTO `photo` (`id`, `name`, `img`) VALUES (14, 'Книга1', 'files/20110106170046.jpg'), (12, 'Книга2', 'files/20110106113315.png'), (13, 'книга3', 'files/20110106113325.jpg'), (11, 'книга4', 'files/20110106113302.jpg'), (10, 'книга5', 'files/20110106113246.jpg'), (6, 'книга6', 'files/20110106113047.jpg'), (7, 'книга7', 'files/20110106113148.png'), (8, 'книга8', 'files/20110106113218.jpg'), (9, 'книга9', 'files/20110106113231.jpg'), (15, 'книга10', 'files/20110107043024.gif'); [/sql] вот таблица golos: [sql] CREATE TABLE IF NOT EXISTS `golos` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_golos` int(11) NOT NULL, `ip` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=78 ; -- -- Dumping data for table `golos` -- INSERT INTO `golos` (`id`, `id_golos`, `ip`) VALUES (56, 11, '192.168.1.2'), (55, 14, '192.168.1.2'), (54, 14, '192.168.1.2'), (53, 8, '192.168.1.2'), (52, 8, '192.168.1.2'), (51, 7, '192.168.1.2'), (50, 6, '192.168.1.2'), (49, 11, '192.168.1.2'), (48, 11, '192.168.1.2'), (47, 12, '192.168.1.2'), (46, 15, '192.168.1.2'), (57, 10, '192.168.1.2'), (58, 6, '192.168.1.2'), (59, 7, '192.168.1.2'), (60, 7, '192.168.1.2'), (61, 9, '192.168.1.2'), (62, 14, '192.168.1.2'), (63, 13, '192.168.1.2'), (64, 11, '192.168.1.2'), (65, 10, '192.168.1.2'), (66, 10, '192.168.1.2'), (67, 10, '192.168.1.2'), (68, 10, '192.168.1.2'), (69, 10, '192.168.1.2'), (70, 15, '192.168.1.2'), (71, 15, '192.168.1.2'), (72, 13, '192.168.1.2'), (73, 10, '192.168.1.2'), (74, 6, '192.168.1.2'), (75, 7, '192.168.1.2'), (76, 7, '192.168.1.2'), (77, 9, '192.168.1.2'); [/sql] Поможете?
У вас типичная ошибка новичка, который не удосужился прочитать простейшие советы. Отсюда и проблема с сортировкой. Делаем поле votes в таблице photos и делаем этому полю +1 при добавлении голоса. В итоге получаем простейший запрос вида: [sql]SELECT * FROM photo ORDER BY votes DESC[/sql]
держи))) [sql]SELECT count( golos.id ) AS summa, photo.img FROM photo LEFT JOIN golos ON photo.id = golos.id_golos GROUP BY golos.id_golos ORDER BY summa DESC[/sql] Если надо чтобы ip не повторялись - сам допилишь))