Этот запрос возвращает записи с 4 колонками: id, alias, name, status
SELECT DISTINCT t.id, t.alias, t.name,
CASE WHEN at.tag_id IS NULL THEN 0 ELSE 1 END AS status
FROM tbl_tag t LEFT JOIN tbl_article_tags at
ON t.id = at.tag_id
Как добавить условие WHERE status = 1? Если его добавить, то mysql выдает ошибку:
#1054 - Unknown column 'status' in 'where clause'
Ответ
SQL Alias - могут быть использованы для задания таблицам или столбцам других имен, используя для этого псевдоним. Использование псевдонимов может быть полезным, если имеются длинные или сложные имена таблиц или столбцов.
Когда Вы пишете AS status - Вы задаете имя для столбца, увы его нельзя использовать в условии WHERE. Поэтому решение поставленной задачи будет таким:
SELECT DISTINCT t.id, t.alias, t.name,
CASE WHEN at.tag_id IS NULL THEN 0 ELSE 1 END AS status
FROM tbl_tag t LEFT JOIN tbl_article_tags at
ON t.id = at.tag_id
WHERE at.tag_id IS NOT NULL
Комментариев нет:
Отправить комментарий