Q:

Uso de CONCAT, CONCAT_WS e GROUP_CONCAT

Estou construindo uma query em que procuro resultados dentro da concatenação e apanhei o bastante para pedir ajuda. Utilizo atualmente o MySQL com a aplicação em PHP.
No exemplo abaixo, busco as palavras "F1000" e "GRID" numa concatenação de colunas de ambas as tabelas. O produto pode, ou não, ter uma grade.
SELECT p.id, 
       p.id_maker, 
       p.name, 
       p.description, 
       p.specifications 
FROM   product AS p 
WHERE  CONCAT(
           CONCAT_WS(
               ' ', 
               p.name, 
               p.description, 
               p.specifications
           ), ', ', 
           GROUP_CONCAT(
              (
                 SELECT CONCAT_WS(
                     ' ', 
                     g.description, 
                     g.original_cod_maker
                 ) 
                 FROM product_grid AS g 
                 WHERE g.fk_son = p.id
           ) 
           SEPARATOR ', ')
       ) 
       REGEXP '(.*)GRID(.*)F1000(.*)'

Esta query apresenta erro 1111 (invalid use of group function) referente ao uso dos métodos de concatenação.
Agradeço desde já por sua ajuda.

A:

O comando GROUP_CONCAT serve para concatenar grupos quando se utiliza funções de agregação como SUM, MAX, AVG, etc.
Para a sua consulta, você pode apenas pesquisar dentro dos campos diretamente. Uma sugestão de query:
SELECT p.id, 
       p.id_maker, 
       p.name, 
       p.description, 
       p.specifications 
FROM   product AS p 
LEFT JOIN product_grid AS g
    ON (p.id = g.fk_son)
WHERE (
  p.name               LIKE '%GRID%' OR p.name               LIKE '%F1000%'
  OR
  p.description        LIKE '%GRID%' OR p.description        LIKE '%F1000%'
  OR
  p.specifications     LIKE '%GRID%' OR p.specifications     LIKE '%F1000%'
  OR
  g.description        LIKE '%GRID%' OR g.description        LIKE '%F1000%'
  OR
  g.original_cod_maker LIKE '%GRID%' OR g.original_cod_maker LIKE '%F1000%'
)

