2013-02-15 51 views
0

在SO上發現了類似的問題,但沒有任何幫助。這是我的問題:MySQL查詢從多個表中檢索數據作爲嵌套樹

我有一個表,'事件',這將是相當大的。 也有這兩個表:'照片'和'視頻'。 每個'events'記錄都有一個eid(event id)。 每個「照片」和「視頻」記錄都有一個aeid(相關事件ID)。

搶說20個事件的事件數據,目前,我正在運行PHP,像這樣:

array = get top 20 events 
for these 20 events 
    array['photos'] = get all photos 
    array['videos'] = get all videos 
return events array 

我找到了,這是運行速度太慢。可能因爲這相當於41個mysql查詢。我意識到我需要以某種方式使用JOIN(我認爲我至少這樣做了),但是我無法想象我們如何構建我的查詢,以便以與上面僞代碼相同的方式嵌套照片和視頻。另外,我認爲我沒有時間去切換到postgres(除非它被強烈建議);我正在與一個足夠大的代碼庫合作,只有一個開發人員(我)纔會頭痛。

如果您發佈文檔/手冊,我願意閱讀。但是,我已經在幾個地方這樣做了,但無濟於事。謝謝!

+0

下面有沒有幫助我的答案嗎? – 2013-02-15 22:45:15

回答

0

嘗試像..

SELECT E.eid, V.aeid, P.aeid 
FROM events E, videos V, photos P 
WHERE E.eid='$ID' and V.aeid='$ID' and P.aeid='$ID' 
ORDER BY E.eid desc 

未經檢驗的,但你應該明白了吧

+0

這是返回0結果。我認爲這是因爲它假定每個事件至少有一個視頻和照片。那是爲什麼?另外,我不明白這是如何將事件的照片和視頻嵌入到事件輸出中的。 (我想後者可以用php來完成) – celwell 2013-02-15 23:43:17

+0

這只是一個簡單的例子,你可以使用它來代替連接。您應該發佈您當前的SQL查詢,以便我可以進一步幫助您。 – 2013-02-15 23:48:55

+0

謝謝,但目前的查詢是在ActiveRecord語句中,因爲我使用的是CodeIgniter。我必須發佈整個PHP文件,讓他們有任何意義(我不能這樣做)。有沒有辦法通過結果和子查詢中的所有事件行將照片添加到「照片」別名/列和視頻相同? – celwell 2013-02-16 00:00:57