Использование CONCAT, CONCAT WS и GROUP CONCAT


Я строю запрос, в который я ищу, результаты внутри объединения и уловил достаточно, чтобы позвать на помощь. В настоящее время я использую MySQL с приложением на PHP.

и В примере ниже, я ищу слова "F1000" и "GRID" в конкатенации столбцов из обеих таблиц. Продукт может иметь или не иметь сетку.

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(.*)'

Этот запрос показывает ошибку 1111 (invalid use of group function) для использования методов объединения.

Благодарю уже сейчас на вашу помощь.

Author: Laerte, 2017-01-06

1 answers

Команда GROUP_CONCAT служит для объединения групп при использовании агрегатных функций, как SUM, MAX, AVG, etc.

Для вашего запроса, вы можете просто искать в областях непосредственно. Предложение 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%'
)
 2
Author: jlHertel, 2017-02-14 11:18:53