2015-06-17 19 views
1

我使用查詢來選擇檢查類型「檢查」並查找日誌文件以查找引用此檢查的最新日誌條目。SQL查詢:由於錯誤而無法創建視圖#1349:重新構建查詢的幫助

SELECT checks.*, logs.last_completed_on, logs.completed_by 
    FROM checks INNER JOIN 
     (
      SELECT check_id, MAX(completed_on) AS last_completed_on, 
      completed_by FROM checks_log GROUP BY check_id 
     ) logs  
ON checks.id = logs.check_id 

此查詢的工作原理,但我需要爲它創建一個視圖。這是我第一次使用視圖,所以我不知道很多關於他們,但我讀到它不可能與此類型的查詢...

我的問題是是否有一種方法來重組它以任何方式?

我想另一種解決方案是在表中的每一行的特定檢查ID上調用此查詢?這聽起來很糟糕,雖然......並且很慢,但我不確定。

感謝

回答

0

MySQL中的視圖不能處理from子句中的子查詢。所以,你需要一些不同的邏輯。

這個版本應該工作:

SELECT c.*, cl.completed_on as last_completed_on, cl.completed_by 
FROM checks c INNER JOIN 
    checks_log cl 
    ON c.check_id = cl.check_id 
WHERE cl.completed_on = (SELECT MAX(cl2.completed_on) 
         FROM checks_log cl2 
         WHERE cl2.check_id = cl.check_id 
         ); 

的MySQL確實允許在SELECTFROM條款子查詢,所以這應該是好的。

+0

現貨,非常感謝:) –

0

只要查詢工作正常,您可以從中創建一個視圖。
CREATE VIEW {insertnamehere} as (insertyourqueryhere)
嘗試使用和不使用括號。我不知道你使用的是什麼工具*