我在編寫MySQL查詢時遇到了一些麻煩。我不知道如何描述我的問題,以便在網上搜索它,所以如果我的問題很愚蠢,那麼很抱歉。mysql複雜連接
我有3個表:
CREATE TABLE posts(id INT, author INT);
CREATE TABLE users(id INT, nick varchar(64));
CREATE TABLE groups(id INT, name varchar(64));
CREATE TABLE membership (user INT, group INT, date INT) ;
成員包含有關加入一些組的用戶信息。成員表中的「日期」是用戶加入該組的時間。
我需要一個查詢,它將返回一個帖子,其作者的暱稱和具有最少加入日期的組的名稱。
所有我現在是:
SELECT p.id, u.nick, g.name
FROM posts AS p
LEFT JOIN users AS u ON u.id = p.author
LEFT JOIN membership AS m ON m.user = p.author
LEFT JOIN groups AS g ON g.id = m.group
WHERE 1;
但當然它返回一個隨機組的名稱,而不是一個與最早加盟日期。
我也試過以下的變體:
SELECT p.id, u.nick, g.name
FROM posts AS p
LEFT JOIN users AS u ON u.id = p.author
LEFT JOIN
(SELECT * FROM membership WHERE 1 ORDER BY date ASC)
AS m ON m.user = p.author
LEFT JOIN groups AS g ON g.id = m.group
WHERE 1;
,但它給了我同樣的結果。
我會感激甚至指向我可以開始的地方,因爲此刻我不知道該如何處理它。
適當的[示例代碼](http://sscce.org/)(對於SQL問題,意味着'CREATE TABLE'語句)比專用模式更有幫助。還要注意,使自動遞增的列無符號可以使生成值的數量增加一倍(而不是問題中的表可能會達到許多條目)。 – outis 2011-12-17 21:39:24
謝謝,我已經從電影,遊戲和技術文檔中學到了英語,所以我認爲至少我可以寫一些說英語的人可以理解的東西是很好的。但下個月我打算吸取一些經驗教訓來更好地學習。 – navij 2011-12-17 22:18:19