SELECT ally_name, ally_crest_id, ally_id, characters.char_name, count.count FROM clan_data LEFT JOIN characters ON clan_data.leader_id = characters.charId LEFT JOIN (SELECT clanid, COUNT(clanid) AS count FROM characters GROUP BY clanid) AS count ON clan_data.clan_id=count.clanid AND clan_data.clan_id=clan_data.ally_id WHERE clan_id=ally_id AND characters.accesslevel=0; Красным помечена битая часть, не могу додумать. ally_id - из запроса берется!!! Суть проблемы:
У тебя не верно написано... Надо так: Код (PHP): SELECT cd.*,ch.*,ac.*,ccount FROM clan_data as cd INNER JOIN characters as ch ON cd.leader_id=ch.charId LEFT JOIN accounts as ac ON ch.account_name=ac.login LEFT JOIN (SELECT clanid, count(char_name) AS ccount FROM characters WHERE clanid GROUP BY clanid) AS all_chars ON cd.clan_id=all_chars.clanid Код (PHP): 'topclans' => " SELECT cd.*,char_name,ccount,onl,ct.name as castle_name FROM clan_data as cd INNER JOIN characters as c ON cd.leader_id=c.charId AND clan_level>='{clanlevel}' LEFT JOIN ( SELECT clanid,count(level) as ccount,sum(online) as onl FROM characters WHERE clanid GROUP BY clanid) as levels ON cd.clan_id=levels.clanid AND clan_level>='{clanlevel}' LEFT JOIN castle as ct ON ct.id=cd.hasCastle ORDER BY clan_level DESC,ccount DESC LIMIT {limit}" Давно писал, смотри логику и переделывай, мне лень, что - то делать. =)
Для начала - заключи названия всех полей, таблиц и алиасов в косые кавычки (`) - которые на букве ё при английской раскладке клавиатуры. Иначе такие слова как count оно по идее воспринимает как названия функций, а не как названия полей и т.п.
В другом запросе все норм. Your, короче мне нужно посчитать кол-во членов в альянсе)) То что ты выдрал из СВ мне не катит) Там нет ТОП Али.
Какое к черту св, ахаха... Где ты там видел такое?) Я тебе дал, то , что я писал себе давно... Тут про кланы, по логике бери и пиши про альянсы там примерно, тоже самое будет. Или в платник, найдутся храбрецы сделают! =)
окей, тогда как ты объяснишь, почему ты запросы пишешь в куске массива? хДДД Это выдранный кусок массива, я что не вижу чтоли? + такая манера массива у СВ разработчиков помню.
видимо он несколько запросов делает в цикле =) и решил вместо того, чтобы писать ручками вот замутить массив. вот такой он маленький извращенец.
Я тоже использую массивы... Но раз такое дело, то фиг с ним... =) Он у меня спиздил =), потому, что у этого говна брать не фиг Добавлено спустя 10 минут 58 секунд: блин врнатури почти такой же, ЛОЛ! Код (PHP): "getTopClan"=>" SELECT clan_data.clan_name, clan_data.clan_id, clan_data.ally_name, clan_data.clan_level, clan_data.reputation_score, clan_data.hasCastle, characters.char_name, ccount FROM `clan_data` LEFT JOIN `characters` ON characters.charId = clan_data.leader_id LEFT JOIN ( SELECT clanid, count(level) AS ccount FROM characters WHERE clanid GROUP BY clanid ) AS levels ON clan_data.clan_id = levels.clanid ORDER BY clan_data.clan_level DESC, clan_data.reputation_score DESC LIMIT {limit}" только не совсем такой... Да вообще мне по фиг.. Я это давно уже писал =)
Проехали, а массив СВ юзает не для цикла, а для шаблонности)) А вот зачем мне Юра показал свой вариант в массиве хз) Добавлено спустя 1 минуту 37 секунд: Во всяком случае я делаю не топ кланов,а топ Али. Мне нужно посчитать сколько игроков в одном альянсе. Т. е. предположим в альянсе 3 клана, и в каждом клане по 50 человек. Получается в али 150 чел. Вот как блин сделать такой запрос, я голову ломаю уже не могу. И реально ли это вообще в одном запросе сделать?
Св типо MVC только у него это ужасно и не верно! Я делал али в одном все было, так, что мучай! Я там делал и подсчет и кто онлайн из али и сколько всего онлайн из али =)
Да я то допетрю и все что ты сказал, мне еще предстоит=) Только я не понимаю зачем ты тогда сидишь на этом форуме. Я сюда написал чтобы помогли поскорее разобраться.
Отдыхаю. Можно тут, сразу цену! А там и поговорим, да нет =) Ну или сам думай. А то ты с таким возмущением быстро сразу помогите мне я вашь король блин! Ну дак, флаг в руки =)
Не было времени раньше, вот сел 30-40мин помудился и вуаля (мб кому понадобиться): Код (Text): SELECT ally_name, ally_crest_id, ally_id, characters.char_name, cd.count FROM clan_data LEFT JOIN characters ON clan_data.leader_id = characters.charId LEFT JOIN ( SELECT ally_id AS ad, COUNT(*) AS count FROM clan_data LEFT JOIN characters ON clan_data.clan_id = characters.clanid GROUP BY ad ) AS cd ON clan_data.ally_id = cd.ad WHERE clan_id=ally_id AND characters.accesslevel=0 ORDER BY cd.count DESC; Вот и все Your, обещал разберусь же)
это мое фото) Я и в жизни так хожу постоянно. Добавлено спустя 14 минут 48 секунд: Да и не токае делал, хотя это самый сложный запрос на сегодняшний день, который мне когда-либо приходилось делать. Вот что ранее было: Для каждой базы форума (модуль последние новости) IPB, phpBB, SMF, vBulletin, XenFoRo одним запросов вывожу: - Название темы - Автор - Ссылка на форум - Ссылка на автора - Дата - Последний автор - Ссылка на последнего автора - Последний пост - Ссылка на последний пост - Дата последнего поста - Раздел форума =)
Хмм, а почему Вы решили что от них можно избавиться и почему это плохо?=) Или писать 2 запроса лучше? Добавлено спустя 22 минуты 3 секунды: Во всяком случае, если у Вас есть идея как это сделать, то не я не прочь посмотреть, даже интересно =) И респект Вам, если сделаете это.