2016-06-18 3 views
0

Я пытаюсь запустить запрос в результирующем наборе другого запроса, но получаю ошибки, которые я не могу понять. Я уверен, что это что-то маленькое, но я как-то его не хватает. Это запрос:Запрос на результат запроса другого запроса

SELECT 
    RLID, 
    NAME, 
    GROUP_CONCAT(SUBQUERY.Items SEPARATOR ', ') AS Items 
FROM 
    (
    SELECT 
    `rel_menu_item`.`ID` AS `RLID`, 
    `menu`.`Name` AS `Menu_Name`, 
    `item`.`Name` AS `Items` 
    FROM 
    `rel_menu_item` 
    JOIN 
    `menu` ON `menu`.`ID` = `rel_menu_item`.`Menu_ID` 
    JOIN 
    `item` ON `item`.`ID` = `rel_menu_item`.`Item_ID` 
) AS SUBQUERY 
GROUP BY 
    SUBQUERY.Name 

Ошибки:

3 ошибки были найдены в ходе анализа.

  1. Ожидаемое выражение. (Возле "(" в положении 90)
  2. Неожиданный маркер. (Возле "(" в положении 90)
  3. Этот тип пункта ранее разобранной. (Вблизи "Select" в положении 95)
+3

это 'Menu_Name' не' Name' – wajeeh

ответ

1

Я нашел ошибки Вот правильный запрос:.

SELECT 
    SUBQUERY.RLID, 
    SUBQUERY.Menu_Name, 
    GROUP_CONCAT(SUBQUERY.Items SEPARATOR ', ') AS Items 
FROM 
    (
    SELECT 
    rel_menu_item.ID AS RLID, 
    menu.Name AS Menu_Name, 
    item.Name AS Items 
    FROM 
    rel_menu_item 
    JOIN 
    menu ON menu.ID = rel_menu_item.Menu_ID 
    JOIN 
    item ON item.ID = rel_menu_item.Item_ID 
) AS SUBQUERY 
GROUP BY 
    SUBQUERY.Menu_Name 
+1

Я не понимаю, почему у вас есть подзапрос. – Strawberry

0

Вы должны писать этот запрос без подзапроса на всех:

SELECT m.Id as RLID, m.Name as Menu_Name 
     GROUP_CONCAT(i.name SEPARATOR ', ') AS Items 
FROM rel_menu_item rmi JOIN 
    menu m 
    ON m.ID = rmi.Menu_ID JOIN 
    item i 
    ON i.ID = rmi.Item_ID 
GROUP BY m.Id, m.Name; 

Примечания:

  • подзапрос не нужен.
  • Табличные псевдонимы облегчают запись и чтение.
  • Лучше использовать столбец из таблицы первичных ключей menu.id, а не из внешних ссылок. На самом деле это не имеет никакого отношения к внутренним объединениям, но это действительно имеет значение с внешними объединениями; следовательно, это плохая практика.
  • Вы должны включить все неагрегированные столбцы в GROUP BY.
Смежные вопросы