MySQL, совокупная проблема подвыбора - PullRequest
1 голос
/ 14 января 2011

Я нахожусь в процессе разработки сайта, который позволит игрокам определенной игры загружать свои уровни и отмечать их.Учетная запись каждого игрока фактически является учетной записью на форумах, которые использует сайт (SMF).

Я могу вернуть все теги, связанные с определенным уровнем, без проблем;Я сталкиваюсь с проблемой, когда хочу отфильтровать совпадения по результату этого выбора.Он утверждает, что столбец 'taglist' не существует ...

SELECT smf_members.realName,game_levels.*,
       (SELECT GROUP_CONCAT(tag) 
          FROM `game_tags`
         WHERE `game_tags`.uuid = `game_levels`.uuid) AS taglist    
  FROM `game_levels`
INNER JOIN `smf_members` ON `smf_members`.ID_MEMBER = `game_levels`.ID_MEMBER    
WHERE taglist LIKE 'untagged'    
ORDER BY `ID_TOPIC` DESC

Заранее спасибо.Я также попытался выполнить второе INNER JOIN для таблицы тегов, сузив результаты с помощью обычного WHERE на game_tags.tag, но затем я получил одну строку, в которой все теги объединены.

1 Ответ

2 голосов
/ 14 января 2011

Нельзя ссылаться на псевдоним столбца в предложении WHERE - самый ранний MySQL поддерживает ссылку на псевдоним столбца - GROUP BY. Использование:

  SELECT sm.realName, 
         gl.*,
         x.taglist
    FROM GAME_LEVELS gl
    JOIN SMF_MEMBERS sm ON sm.id_member = gl.id_member
    JOIN (SELECT gt.uuid,
                 GROUP_CONCAT(gt.tag) AS taglist
            FROM GAME_TAGS gt
        GROUP BY gt.uuid) x ON x.uuid = gl.uuid
   WHERE x.taglist LIKE 'untagged'    
ORDER BY ID_TOPIC DESC
...