2016-06-01 58 views
1

以下查詢有什麼問題?加入兩個子查詢拋出錯誤

SELECT * FROM 
    (SELECT DATE_FORMAT(Start, '%d-%M-%Y') AS Date1, 
    SUM(TIMESTAMPDIFF(SECOND, Start, End))/3600 AS Hours 
    FROM timeslot WHERE UserID = 1 
    GROUP BY Date1) AS A 

LEFT OUTER JOIN 

    (SELECT DATE_FORMAT(TakenAt, '%d-%M-%Y') AS Date2 
    FROM snapshot WHERE Deleted = 1 
    GROUP BY Date2) AS B 

ON A.Date1 = B.Date2 

它不運行。 VS稍微更改查詢(分別將GROUP BY Date1GROUP BY Date2更改爲GROUP BY A.Date1GROUP BY B.Date2),並告訴我關於未知列A.Date1在組語句中。

回答

0

我相信這是因爲MySQL reserved words發生,請嘗試使用反勾`:

SELECT * FROM 
    (SELECT DATE_FORMAT(`Start`, '%d-%M-%Y') AS Date1, 
    SUM(TIMESTAMPDIFF(SECOND, `Start`, `End`))/3600 AS Hours 
    FROM timeslot WHERE UserID = 1 
    GROUP BY DATE_FORMAT(`Start`, '%d-%M-%Y')) A 
LEFT OUTER JOIN 
    (SELECT DATE_FORMAT(TakenAt, '%d-%M-%Y') AS Date2 
    FROM snapshot WHERE Deleted = 1 
    GROUP BY DATE_FORMAT(TakenAt, '%d-%M-%Y')) B 
ON A.Date1 = B.Date2 

或者只是別名每一件事情:

SELECT * FROM 
    (SELECT DATE_FORMAT(t.Start, '%d-%M-%Y') AS Date1, 
    SUM(TIMESTAMPDIFF(SECOND, t.Start, t.End))/3600 AS Hours 
    FROM timeslot t WHERE t.UserID = 1 
    GROUP BY DATE_FORMAT(t.Start, '%d-%M-%Y')) A 
LEFT OUTER JOIN 
    (SELECT DATE_FORMAT(s.TakenAt, '%d-%M-%Y') AS Date2 
    FROM snapshot s WHERE s.Deleted = 1 
    GROUP BY DATE_FORMAT(s.TakenAt, '%d-%M-%Y')) B 
ON A.Date1 = B.Date2 
+0

仍然得到同樣的錯誤與這兩個查詢。 – dotNET

+0

什麼是錯誤? @dotNET .. – sagi

+0

在問題中提到的未知列t.Date1在組語句中。 – dotNET