按计数排序的多个连接忽略 where 条件
Multiple joins with ordered by count ignores where conditions
我试图只从 video_index 中获取属于 category_video_rel 中特定类别的行,并按 COUNT 的查看次数对结果进行排序。这是我正在使用的查询:
SELECT
COUNT(DISTINCT view_count.id) AS count,
view_count.remove,
view_count.video_id,
video_index.id AS video_id,
video_index.active,
video_index.remove,
video_index.title AS title,
video_index.date_published AS date_published,
category_video_rel.active,
category_video_rel.remove,
category_video_rel.video_id AS cv_video_id,
category_video_rel.category_id AS category_id
FROM
view_count JOIN video_index
ON view_count.video_id = video_index.id,
category_video_rel JOIN video_index AS v
ON category_video_rel.video_id = v.id
WHERE
view_count.remove = '0' AND
video_index.active = '1' AND
video_index.remove = '0' AND
video_index.date_published <= '$current_time' AND
category_video_rel.category_id = '$category_id' AND
category_video_rel.active = '1' AND
category_video_rel.remove = '0'
GROUP BY
video_index.id
ORDER BY
count DESC
问题是它输出来自 video_index 的所有行,无论类别如何,视图计数都高于 0。基本上,它忽略了 WHERE 条件中的 "category_video_rel.category_id = '$category_id'" 。
我不知道我做错了什么,请帮忙。
您的 FROM
子句混合了旧式连接和新式连接
而是尝试:
FROM
view_count JOIN video_index
ON view_count.video_id = video_index.id
JOIN category_video_rel
ON category_video_rel.video_id = video_index.id
我试图只从 video_index 中获取属于 category_video_rel 中特定类别的行,并按 COUNT 的查看次数对结果进行排序。这是我正在使用的查询:
SELECT COUNT(DISTINCT view_count.id) AS count, view_count.remove, view_count.video_id, video_index.id AS video_id, video_index.active, video_index.remove, video_index.title AS title, video_index.date_published AS date_published, category_video_rel.active, category_video_rel.remove, category_video_rel.video_id AS cv_video_id, category_video_rel.category_id AS category_id FROM view_count JOIN video_index ON view_count.video_id = video_index.id, category_video_rel JOIN video_index AS v ON category_video_rel.video_id = v.id WHERE view_count.remove = '0' AND video_index.active = '1' AND video_index.remove = '0' AND video_index.date_published <= '$current_time' AND category_video_rel.category_id = '$category_id' AND category_video_rel.active = '1' AND category_video_rel.remove = '0' GROUP BY video_index.id ORDER BY count DESC
问题是它输出来自 video_index 的所有行,无论类别如何,视图计数都高于 0。基本上,它忽略了 WHERE 条件中的 "category_video_rel.category_id = '$category_id'" 。
我不知道我做错了什么,请帮忙。
您的 FROM
子句混合了旧式连接和新式连接
而是尝试:
FROM
view_count JOIN video_index
ON view_count.video_id = video_index.id
JOIN category_video_rel
ON category_video_rel.video_id = video_index.id