2015-06-25 4 views
0

Я не могу понять, почему я получаю ошибку # 1054 - Неизвестный столбец «Имя файла» в «списке поля»Почему мой SQL-запрос дает эту ошибку?

SELECT 'R' AS Type, er.ID, er.RecipeID AS RecipeID, 
    RecipeName AS Name,er.Quantity,UnitID, 
    SUBSTRING_INDEX(PFCC,',',1) AS Protein, 
    SUBSTRING_INDEX(SUBSTRING_INDEX(PFCC,',',2),',',-1) AS Fat, 
    SUBSTRING_INDEX(SUBSTRING_INDEX(PFCC,',',-2),',',1) AS Carbs, 
    SUBSTRING_INDEX(PFCC,',',-1) AS Calories, 
    Rating, AvgRating, AvgCount, 0 AS SpecificID, 
    COALESCE(rimg.Filename,'0.png') AS DefaultImage, 
    s.Price, s.MaxQuantity 
FROM `event-recipe` er 
LEFT JOIN(
     SELECT r.ID,RecipeName, 
      SUM(Quantity) AS Quantity, 
      IFNULL(Rating,0) AS Rating 
     FROM recipe r 
      LEFT JOIN(
       SELECT RecipeID, Filename 
       FROM recipe_image 
       WHERE IsDefault) rimg 
       ON r.ID=rimg.RecipeID 
      LEFT JOIN `recipe-ingredient` ri 
       ON r.ID=ri.RecipeID 
      LEFT JOIN(
       SELECT RecipeID,Rating 
       FROM `recipe-rating` 
       WHERE CustomerID=2) rr 
       on r.ID=rr.RecipeID 
    GROUP BY r.ID) r ON er.RecipeID=r.ID 
LEFT JOIN(
    SELECT RecipeID, GROUP_CONCAT(Value ORDER BY Nutr_No) AS PFCC 
    FROM nutrient_view_ingredient nv 
    WHERE Nutr_No IN (203,204,205,208) 
    GROUP BY RecipeID) n 
    ON r.ID=n.RecipeID 
LEFT JOIN sell_recipe s ON (er.EventID=s.EventID AND s.RecipeID=er.RecipeID) 
LEFT JOIN(
    SELECT RecipeID, COUNT(RecipeID) AS AvgCount, ROUND(AVG(Rating),1) AS AvgRating 
    FROM `recipe-rating` 
    GROUP BY RecipeID) avgrate 
    ON r.ID=avgrate.RecipeID 
WHERE er.EventID=53 
+0

Я пробовал помещать 'Filename'. Я попытался переименовать столбец полностью, думая, что имя файла является зарезервированным словом в MySQL. Я пробовал использовать rimg.Filename и только имя файла. – Bodi

+0

Можете ли вы отредактировать сообщение для god shake ... pls – Rahul

+0

В какую таблицу принадлежит fileName? – AdamMc331

ответ

2

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

Первое крупное соединение, которое вы назвали r, является таблицей, содержащей ссылку на filename. Нет, где в этой таблице вы выбираете rimg.fileName, поэтому во внешнем запросе вы даже не можете позвонить r.fileName. Чтобы исправить это, измените строку:

SELECT r.ID, RecipeName 

To:

SELECT r.ID, RecipeName, rimg.FileName 

Тогда в вашем внешнем запросе, вы можете выбрать r.FileName.

Смежные вопросы