[英]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.