2014-06-28 21 views
0

我有以下查詢曖昧列,但是當我的前綴,它說:「未知」

SELECT table1.user_id as uID, table1.password AS pass, table1.libID AS user_id, table2.firstname, lockout.loginAttempts, lockout.lastAttemptTime 
    FROM(SELECT 'johnDoe' user) u 
    LEFT JOIN table1 a 
    ON u.user = a.username 
    INNER JOIN table2 
    ON table1.libID = table2.user_id 
    LEFT JOIN 
    (
     SELECT attemptedUsername, loginAttempts, lastAttemptTime 
     FROM lockout 
     WHERE accountType = 'public' 
    ) l 
    ON u.user = l.attemptedUsername 

我本來不符合表名稱字段列表前綴的列名,但因爲table1和table都有名爲user_id的列--MySQL給了我user_id的'模糊'錯誤。

前綴後,我得到了錯誤

Unknown column 'songbookdbpal_users.user_id' in 'field list' 

列中明確存在 - 有沒有什麼地方,我在語法上絆倒了?

感謝您的時間和幫助。

回答

2

既然你給table1一個別名,你必須使用在查詢的其餘部分:

SELECT a.user_id as uID, a.password AS pass, a.libID AS user_id, 
     table2.firstname, lockout.loginAttempts, lockout.lastAttemptTime 
FROM(SELECT 'johnDoe' user) u 
LEFT JOIN table1 a 
ON u.user = a.username 
INNER JOIN table2 
ON a.libID = table2.user_id 
LEFT JOIN 
(
    SELECT attemptedUsername, loginAttempts, lastAttemptTime 
    FROM lockout 
    WHERE accountType = 'public' 
) l 
ON u.user = l.attemptedUsername 
+0

謝謝Barmar - 我學習的東西每天都有新的關於MySQL的伴侶! – Shaun