А, если кол-во записей присоединяется, то тогда прошу прощения, простой join не подойдёт. ch. - это псевдоним таблицы, для более лаконичной записи, он объявляется сразу после полного имени, вслед за FROM/JOIN. Тьфу, я похоже вам заведомо нерабочий запрос предложил, там ошибки)) Второпях писал. А Int и промолчал)) Вот что-то такое, мне кажется должно быть: SELECT ch.*, COUNT(`ach`.`achievement`) AS `counter` FROM `characters` `ch`, `character_achievement` `ach` WHERE 1 AND `ch`.`deleteDate` IS NULL AND `ach`.`guid` = `ch`.`guid` ORDER BY `counter` DESC Что тут происходит? 1. Выбираем все значения из characters, при условии .`deleteDate` IS NULL 2. считаем кол-во строк в таблице `character_achievement` с achievement при с одинаковыми guid (как я понимаю, тут можно любой столбец считать, т.к. нам кол-во строк же надо, а значения столбцов безразличны?) 3. сортировка по кол-ву 4 нужное вам значение в counter Спасибо, за подробное объяснение, но что-то не выводятся все результаты, а только один, возможно я что-то не так сделал вот страница http://wow-moon.dyndns.biz/content/index.php?page=top10achievement вот код <? include("../modules/conf.php"); mysql_select_db(characters,mysql_connect($nameSERVER,$nameUSER,$passUSER)); function top10achievement() { $sm_read = file("achievements.html"); $sm_read = implode("",$sm_read); $result_index = mysql_query(" SELECT ch.*, COUNT(`ach`.`achievement`) AS `counter` FROM `characters` `ch`, `character_achievement` `ach` WHERE 1 AND `ch`.`deleteDate` IS NULL AND `ach`.`guid` = `ch`.`guid` ORDER BY `counter` DESC"); $myrow_index = mysql_fetch_array($result_index); preg_match("/\[_repeat\](.*?)\[_repeat\]/s",$sm_read,$div_menu); do { $edd_tamp = $div_menu[1]; $edd_tamp = str_replace("[_src_faction]",$img_src_faction,$edd_tamp); $edd_tamp = str_replace("[_src_race]",$img_src_race,$edd_tamp); $edd_tamp = str_replace("[_src_class]",$img_src_class,$edd_tamp); $edd_tamp = str_replace("[_name]",$myrow_index[name],$edd_tamp); $edd_tamp = str_replace("[_achievements_n]",$myrow_index[counter],$edd_tamp); $disp .= $edd_tamp; } while($myrow_index = mysql_fetch_array($result_index)); $disp = preg_replace("/\[_repeat\].*?\[_repeat\]/s",$disp,$sm_read); return $disp; } ?>