netwind

Рейтинг
419
Регистрация
06.05.2007

Нормальные прокси для нормальных людей не умеют создавать цепочки. Ищите Илитный Софт :)

Технически, для изготовления цепочки понадобятся или socks-прокси или прокси с поддержкой http-метода CONNECT. Тем более для работы произвольного протокола только такие и подойдут.

bearman, может быть внешний group by t.talk_id не обязателен. А то на дампе получается 3 записи всего.

Но тогда можно получить кучу комментов к одной и той же записи и такой блок на сайте не показывает разнообразия.

и еще на моей версии mysql подзапрос упорно игнорирует индекс. а у вас - планирует перебрать по индексу 39 записей.

Miracle:
За запрос спасибо, пока для меня темный лес, я бы не догадался, но , если судить по дампу, должны быть выведены talk_id по такой очередности 47 , 44, 42, 45, 39 в вашем же запросе 47 ,42, 45, 39, 44 - почему так хитро мне не понятно.

а это я сортировку просмотрел. правильно так :


select tc.comment_id,tc.*
from
bt_talk_comment tc
JOIN
(
select max(tc.comment_id) g_max_tc_id
from bt_talk_comment tc
WHERE tc.comment_activity=1
GROUP BY tc.talk_id
ORDER BY g_max_tc_id DESC
LIMIT 5
) last_tc ON tc.comment_id=last_tc.g_max_tc_id
JOIN bt_talk t ON t.talk_id = tc.talk_id
LEFT JOIN bt_user u ON u.user_id = tc.user_id;

я, правда, опасаюсь за подзапрос. что-то он на этих данных вырождается в полный перебор.

Плеер то коробочный и скорее всего без исходников. Кто его переписывать будет?

Попытайтесь считать скачивания файлов анализатором логов.

понятно. чтобы отобрать последний коммент к каждой записи, придется выбирать ид интересующих комментов и уже потом присоединять к ним.

SELECT tc.comment_id, t.talk_id, talk_topic, u.user_email, u.user_nickname
from
bt_talk_comment tc
JOIN
(
SELECT MAX(tc.comment_id) g_max_tc_id
FROM bt_talk_comment tc
WHERE tc.comment_activity=1
GROUP BY tc.talk_id
ORDER BY tc.comment_id DESC
LIMIT 5
) last_tc
ON tc.comment_id=last_tc.g_max_tc_id
JOIN bt_talk t ON tc.talk_id = t.talk_id
JOIN bt_user u ON tc.user_id = u.user_id;

кстати, в дампе натуральное НЛО - user_id =3 отсутствует.

Кажется, спутали условие join , попробуйте так :

SELECT tc.comment_id, t.talk_id, talk_topic, u.user_email, u.user_nickname

FROM bt_talk_comment tc
JOIN bt_talk t ON t.talk_id = tc.talk_id
JOIN bt_user u ON u.user_id = t.user_id
WHERE tc.comment_activity=1
GROUP BY t.talk_id
ORDER BY tc.comment_id DESC
LIMIT 5

Если написать перед запросом EXPLAIN, то можно увидеть как отличается метод обработки с LEFT и без. Вот если бы вы в поля прописали бы NOT NULL, то наверное, план выполнения не отличался бы.

нигде нельзя. по крайней мере для вебсайта.

Miracle:
простите, немного не понял вопроса

Я заметил, что некоторые использую слово LEFT везде - /ru/forum/403218. В моей практике было еще пару случаев. То есть вы четвертый. Кто вас этому учит?

Обычно метод выполнения когда mysql ожидает null-значения отличается и значительно хуже простого объединения.

Andreyka:
Я не отдел К, так что извините что без перестрелок и погонь

Если итог один - переформатирование, стоила ли игра свеч ? Клиент и так теперь знает, что ему нужен постоянный админ.

Х последних комментариев с их авторами

Зачем вы ПОСТОЯННО используете left join ? много у вас комментариев "от НЛО" ?

Всего: 6293