2013-10-26 62 views
-1

我對MySQL很新,我想從3個表中選擇。我不知道要做到這一點,所以我嘗試下面的查詢(它的工作,直到我說第二個內部連接的「主題」表)的最佳方式:MySQL從3個表中選擇?

SELECT 
    posts.id AS post_id, 
    topic_id, 
    date, 
    text, 
    username AS user, 
    users.id AS user_id, 
    topics.title AS title 
FROM 
    posts 
INNER JOIN 
    users 
ON 
    posts.user_id = users.id 
INNER JOIN 
    topics 
ON 
    topics.id =:topic_id 
WHERE 
    topic_id =:topic_id 
ORDER BY 
    date ASC 

那麼,有沒有從選擇一個更簡單的方法3桌?或者是我做得很好,我剛剛在某處發生了錯誤?在此先感謝

+1

到底是什麼問題了嗎?什麼「它的工作,直到我加入第二次內部聯接」是什麼意思? 「*不工作*」究竟是什麼?你應該描述你的*真實*問題:你想要達到什麼樣的目標,你想獲得哪些數據?理想情況下,添加一些示例數據和期望的ouptut。 –

回答

0

您的第二個JOIN子句必須修復。我必須補充一點,如果您只打算使用主題表格中的一行,那麼加入所有三個表格可能不是最有效的方法。

SELECT 
    posts.id AS post_id, 
    topic_id, 
    date, 
    text, 
    username AS user, 
    users.id AS user_id, 
    topics.title AS title 
FROM 
    posts 
INNER JOIN 
    users 
ON 
    posts.user_id = users.id 
INNER JOIN 
    topics 
ON 
    topics.id =posts.topic_id 
WHERE 
    topics.id =:topic_id 
ORDER BY 
    date ASC 
0

您不需要WHERE子句。

而且我認爲最後一個ON子句在它的等號運算符上不應該有:,而只是等於運算符=

在那裏,它應該是這樣的:

SELECT 
    posts.id AS post_id, 
    topic_id, 
    date, 
    text, 
    username AS user, 
    users.id AS user_id, 
    topics.title AS title 
FROM 
    posts 
INNER JOIN 
    users 
ON 
    posts.user_id = users.id 
INNER JOIN 
    topics 
ON 
    topics.id = topic_id 
ORDER BY 
    date ASC