Заказать теги со спичками вверху

0

Я извлекаю теги из базы данных, и я хочу сортировать теги, которые имеют совпадения в таблице tag_posts в верхней части результата. Он близок к работе, но я получаю дубликаты из-за группы c_p_id. Но если я c_p_id из группы по порядку, иногда выбирает неправильную строку. Имеет ли смысл использовать какой-либо вариант IF EXIST?

Я хочу, чтобы теги были перечислены следующим образом:

TAG B
TAG A
TAG C

Если TAG-B имеет хит в tag_posts.

SELECT c_p_id, t_id, t_title
FROM tags
LEFT JOIN projects
ON p_id = " . $p_id . "
LEFT JOIN tag_posts
ON tp_t_id = t_id
LEFT JOIN cats
ON c_id = tp_c_id
AND c_p_id = p_id
GROUP BY t_id, c_p_id
ORDER BY c_p_id DESC, t_title ASC

//РЕДАКТИРОВАТЬ. Я понял другое решение, которое делает то, что я хочу:

SELECT t_id, t_title, 
    (SELECT 1 FROM tag_posts
        INNER JOIN cats
            ON c_id = tp_c_id
        INNER JOIN projects
            ON p_id = c_p_id
        WHERE tp_t_id = t_id
            AND p_id = " . $p_id . "
        LIMIT 1) used
FROM tags
ORDER BY used DESC, t_title ASC
Теги:

1 ответ

0
Лучший ответ

Решение:

SELECT t_id, t_title, 
    (SELECT 1 FROM tag_posts
        INNER JOIN cats
            ON c_id = tp_c_id
        INNER JOIN projects
            ON p_id = c_p_id
        WHERE tp_t_id = t_id
            AND p_id = " . $p_id . "
        LIMIT 1) used
FROM tags
ORDER BY used DESC, t_title ASC

Ещё вопросы

Сообщество Overcoder
Наверх
Меню