2017-04-17 36 views
0

使用的原料的數字。這是我的MySQL查詢當我嘗試計數喜歡的數量,而不是它顯示了配方

SELECT r.RECIPE_ID as recipe_id, 
    r.RECIPE_NAME as recipe_name, 
    r.RECIPE_DESC as recipe_desc, 
    r.RECIPE_DURATION duration, 
    group_concat(i.ING_NAME separator ', ') as recipe_ingredients, 
    rc.CUSINE_NAME as cusine, 
    rt.RECIPE_TYPE_NAME as type, 
    r.image , 
    count(lr.likecount) 
    FROM RECIPE_LIST r 
    inner join likerecipes lr on r.recipe_id = lr.recipe_id 
    inner JOIN RECIPE_INGLIST ri ON r.RECIPE_ID = ri.recipe_id 
    inner JOIN ING_LIST i ON ri.ING_ID = i.ING_id and r.RECIPE_ID = ri.recipe_id 
    inner JOIN RECIPE_CUSINE rc ON r.RECIPE_CUSINE_ID = rc.CUSINE_ID 
    inner JOIN RECIPE_TYPE rt ON r.RECIPE_TYPE_ID = rt.recipe_typeid 
    WHERE r.RECIPE_ID >= 1 
    GROUP BY r.RECIPE_NAME 

輸出表將顯示如下 Image1

但是,當我除去原料場和所有的連接和執行相同的查詢

SELECT r.RECIPE_ID as recipe_id, 
r.RECIPE_NAME as recipe_name, 
r.RECIPE_DESC as recipe_desc, 
r.RECIPE_DURATION duration, 
rc.CUSINE_NAME as cusine, 
rt.RECIPE_TYPE_NAME as type, 
r.image , 
count(lr.likecount) 
FROM RECIPE_LIST r 
inner join likerecipes lr on r.recipe_id = lr.recipe_id 
inner JOIN RECIPE_CUSINE rc ON r.RECIPE_CUSINE_ID = rc.CUSINE_ID 
inner JOIN RECIPE_TYPE rt ON r.RECIPE_TYPE_ID = rt.recipe_typeid 
WHERE r.RECIPE_ID >= 1 
GROUP BY r.RECIPE_NAME 

我得到期望的結果 - > Image 2

有沒有什麼方法可以顯示正確數量的喜歡成分。 (PS。我知道第一個查詢是顯示no成分而不是喜歡,因爲當我推導出其中一個成分的數量減少了,也顯示的食譜通過透視表顯示recipe_inglist加入recipe_list和ing_list表(如果那有什麼做的其餘部分之前喜歡用它做))

回答

0

骨料的加入:

FROM RECIPE_LIST r JOIN 
    (SELECT lr.recipe_id, COUNT(*) as likes 
     FROM likerecipes lr 
     GROUP BY lr.recipe_id 
    ) lr 
    ON r.recipe_id = lr.recipe_id . . . 
+0

我做了什麼,你告訴我,做和插入上述查詢,刪除先前存在的與喜歡相關的查詢,但輸出表甚至沒有類似的列 –

+0

你必須在'select'中包含'likes'。 –

+0

MySQL說:文檔 #1349 - 視圖的SELECT包含FROM子句中的子查詢....爲什麼我得到這個錯誤。當我試圖搜索它時,它顯示它與我使用的mysql版本有關,它使用了@AtulStha的 –

相關問題