Собственно вот запрос:
SELECT
p.id,
p.autor,
p.date,
p.short_story,
CHAR_LENGTH(p.full_story) as full_story,
p.xfields,
p.title,
p.category,
p.alt_name,
p.comm_num,
p.allow_comm,
p.fixed,
p.tags,
e.news_read,
e.allow_rate,
e.rating,
e.vote_num,
e.votes,
e.view_edit,
e.editdate,
e.editor,
e.reason,
f.dcount
FROM dle_post p
LEFT JOIN dle_post_extras e ON (p.id=e.news_id)
LEFT JOIN dle_files f ON (p.id=f.news_id)
WHERE category NOT REGEXP '[[:<:]](3)[[:>:]]'
AND approve=1
ORDER BY rating DESC, news_read DESC, comm_num DESC, dcount DESC
LIMIT 0,100
Если оставить только ORDER BY rating DESC то все нормально и дублей нет.
Вам нужно дописать в конце запроса:
GROUP BY p.id
Проблема возникает потому что в других таблицах есть по нескольку записей для одной записи из таблицы dle_post. Соответственно MySQL выводит все возможные сочетания записей из первой таблицы записям из других таблиц.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости