2011-11-23 98 views
0

我已經想出了我的大部分SQL查詢,但我似乎需要一點幫助。如何在此查詢中獲取用戶名和用戶名? (MySQL)

我似乎無法弄清楚如何使用social_posts.user_iduser中選擇username

這裏是我的查詢(的作品):

SELECT social_posts.user_id, social_posts.post_stamp, social_posts.message 
FROM social_posts 
WHERE id IN (
SELECT social_threads.id 
FROM social_threads, friends 
WHERE (((friends.user_a = ?) || (friends.user_b = ?)) && (friends.request = 1)) || (social_threads.user_id = ?) 
ORDER BY social_threads.id DESC) 
LIMIT 15 

我想查詢返回user.username。在user表中,用戶標識被稱爲id

當我嘗試以下方法我得到一個錯誤:

SELECT social_posts.user_id, social_posts.post_stamp, social_posts.message, user.username 
FROM social_posts 
INNER JOIN user ON social_posts.user_id = user.id 

WHERE id IN (
SELECT social_threads.id 
FROM social_threads, friends 
WHERE (((friends.user_a = ?) || (friends.user_b = ?)) && (friends.request = 1)) || (social_threads.user_id = ?) 
ORDER BY social_threads.id DESC) 

LIMIT 15 

該查詢返回以下錯誤: Column 'id' in IN/ALL/ANY subquery is ambiguous

雖然這個工程:

SELECT social_posts.user_id, social_posts.post_stamp, social_posts.message, user.username 
FROM social_posts 
INNER JOIN user ON social_posts.user_id = user.id 
LIMIT 15 

任何幫助表示讚賞。

+0

你什麼錯誤? (我們不是通靈) – Bohemian

+0

@Bohemian對不起,我得到的錯誤是IN/ALL/ANY子查詢中的'Column'id'不明確。 –

回答

1

試試這個

SELECT social_posts.user_id, social_posts.post_stamp, social_posts.message, user.username 
FROM social_posts , user 
WHERE social_posts.id IN (
SELECT social_threads.id 
FROM social_threads, friends 
WHERE (((friends.user_a = ?) || (friends.user_b = ?)) && (friends.request = 1)) || (social_threads.user_id = ?) 
ORDER BY social_threads.id DESC) 
AND social_posts.user_id = user.id 
LIMIT 15 

我認爲Order By條款與內部查詢,

+0

@Josh Foskett編輯。 – Zohaib

+0

它似乎在'字段列表'中返回未知列'social_posts.user_id'。 –

+1

@JoshFoskett是表別名的問題,已編輯查詢。從「from」子句中刪除表別名。請現在嘗試 – Zohaib

相關問題