2013-07-02 78 views
0

嗨,我有如下表MySQL的加入3代表一起

用戶(ID是主鍵/自動增加)

 
    id | alias | name 
---------------------------------- 
1   |Joe   |Joe Anderson 
2   |TG   |Tegu Kuan 
3   |Peter  |Peter Neil 
4   |Nicol  |Clin Nicol 

圖像(ID是主鍵/自動增加。images.user代表用戶。 ID)

 
    id | image | user 
---------------------------------- 
1   |125.jpg  |1 
2   |126.jpg  |1 
3   |127.jpg  |2 
4   |128.jpg  |3 

飼料(ID是主鍵/自動增量。feed.user表示users.id)

 
    id | title | user 
---------------------------------- 
1   |-some text a-|1 
2   |-some text b-|2 
3   |-some text c-|3 
4   |-some text d-|3 

我想加入這3代表在下列情況下

  1. 輸出應該包含users.alias,images.image,feed.title
  2. 四行作爲飼料表有四排(我需要從feed)。
  3. 只有同一用戶的最後一張圖片。爲例126.jpg用戶1不125.jpg
  4. 降序的feed.id
  5. 爲了

輸出應該是這樣的

 
    alias | image | title 
---------------------------------- 
Peter  |128.jpg  |-some text d- 
Peter  |128.jpg  |-some text c- 
TG  |127.jpg  |-some text b- 
Joe  |126.jpg  |-some text a- 

請幫我寫此查詢。

+0

你甚至會自己嘗試嗎?公平地說,你的表格很簡單,因此查詢非常簡單。任何基本的JOIN教程都會給你足夠的信息來做到這一點。 – Lee

+0

您能向我們展示您迄今爲止所做的工作,以便我們幫助您糾正哪些問題? –

+0

@李我已經嘗試了很多次。我想我有關於mysql連接知識的問題。如果有兩張桌子,對我來說很容易。這就是爲什麼我花了大約15分鐘在這篇文章中寫下所有表格。 – AmilaDG

回答

0

問題是,無論是圖像還是飼料表都沒有超出您所顯示的順序的「最後」的良好概念。我不知道如何以一般方式決定給定用戶使用哪一個。

您的用戶1擁有圖片125.jpg和126.jpg。你打算保留這個計劃嗎?如果插入名爲「some-random-image.jpg」的圖像,會發生什麼情況?相對於你現在生效的那兩個,它的順序是什麼?

這是一個微不足道的問題,如果圖像和標題都有時間戳來指示生效日期。如果這是真的,你可以根據最新生效日期選擇每一個。

在這種情況下,您可以使用兩個JOIN和幾個子選擇來編寫一個SELECT,以選擇給定日期的生效日期。

查詢會是這個樣子:

SELECT U.ID, U.ALIAS, I.IMAGE, F.TITLE 
FROM USERS AS U 
JOIN IMAGES AS I 
ON U.ID = I.USER 
JOIN FEED AS F 
ON U.ID = F.USER 
GROUP BY U,ID 

添加WHERE子句,選擇「最新的」需要。

+0

@Mike勃蘭特,在這裏,我已經做了。我仍然需要修復用戶的最後一張圖片,並在輸出中顯示。這隻顯示錶格中的第一張圖片。 SELECT feeds.id,users.alias,images.image FROM飼料 INNER JOIN用戶 ON feeds.user = users.id INNER JOIN圖像 ON feeds.user = images.user GROUP BY feeds.id ORDER BY feeds.id DESC – AmilaDG