簡體   English   中英

為什么我的SQL查詢會出現此錯誤?

[英]Why does my SQL query give this error?

我無法弄清楚為什么總是出現錯誤#1054-“字段列表”中的未知列“文件名”

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 

問題在於您如何使用括號對表進行分組,以及您從未在內部聯接中選擇文件名的事實。

第一個大聯接,您已將其命名為r是引用filename的表。 在該表的任何位置都沒有選擇rimg.fileName因此在外部查詢中,您甚至無法調用r.fileName 要解決此問題,請更改以下行:

SELECT r.ID, RecipeName

至:

SELECT r.ID, RecipeName, rimg.FileName

然后,在外部查詢中,可以選擇r.FileName

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM