Где оговорка с Group By - PullRequest
       3

Где оговорка с Group By

1 голос
/ 09 сентября 2011

У меня такой запрос:

SELECT TPCombined.Title, 
GROUP_CONCAT(DISTINCT CONCAT(a.LastName, ', ', a.FirstName) SEPARATOR '<br />') as Author 
FROM ((SELECT b.Title FROM BookList b) UNION (SELECT s.Title FROM Studios s)) 
AS TPCombined 
LEFT OUTER JOIN (AuthorLinks al JOIN Authors a ON al.AuthorStem = a.AuthorStem) 
ON TPCombined.BookStem = al.BookStem 
WHERE Author LIKE '%Smith%' GROUP BY BookStem; 

Этот запрос не работает:

Неизвестный столбец «Автор» в «предложении где»

Это будет работать с HAVING вместо WHERE. Но мне действительно нужно использовать Где. Не могли бы вы подтвердить, если это действительно невозможно? Или, может быть, я могу как-то исправить запрос, чтобы он работал с Где?

Ответы [ 2 ]

3 голосов
/ 09 сентября 2011

WHERE предложения применяются на уровне строки. Вы определили агрегатную функцию как Автор, что означает, что ее результаты не будут доступны на уровне строк - только когда запрос завершен и готов к отправке клиенту. Вместо этого вам нужно использовать фильтр HAVING, который применяется непосредственно перед отправкой клиенту.

0 голосов
/ 09 сентября 2011

вам нужно квалифицировать автора с префиксом TPCombined ... TPCombined.Author LIKE ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...