2011-10-03 15 views
0

「額外」的信息列表,這是一個有點困難,在標題解釋,但我應該能夠在這裏。我有一個看起來像這樣的兩個表:MySQL查詢 - 讓從JOIN類似的表到一個嵌套的數組

Table 1: 
    -id 
    -created 
    -last_modified 
    -title 

Table 2: 
    -id 
    -parent_id 
    -type 
    -value 

的結構有點類似於如下:從表中的項目可以有許多與其相關的屬性。每個屬性都列在第二個表中,並且引用返回原始。

我遇到的問題是,我希望能夠從表1中獲取記錄列表以顯示在表格中(使用分頁),但也希望能夠從表格2中檢索關聯的所有屬性每張表1同時記錄一次,以便我可能有以下幾種:

(Table 1) ID1 [Title] has attributes x, y, z 
(Table 1) ID2 [Title] has attributes x, y, z 
(Table 1) ID3 [Title] has attributes x, y, z 

等等。理想情況下,我希望能夠將每個屬性與其類型相關聯......目前,通過連接,我接收到相同記錄的多行(每次連接的數據不同),並將它們組合在一起會刪除一些已連接數據完全。

基本上我後是屬性的數組,從表1中的每個記錄將返回(在某種)。

我想使用MongoDB的這個項目,因爲我知道我可以用做簡單的,但我想與MySQL這樣做因爲這是現有的平臺使用。

我希望我已經和我問什麼我:)任何幫助,將不勝感激感!

回答

0

聽起來更像是一個顯示問題。加入的查詢是最好的方法。然後,只需在檢索/顯示代碼中有一個簡單的循環來檢查從一個Table1記錄轉換到另一個Table1記錄的時間,並根據需要調整輸出。

您可以使用MySQL的group_concat()函數檢索所有子記錄爲單個字段,但您最後只能得到(基本上)單個字符串連接的數據,而不是結合查詢/顯示循環提供的單個記錄。 group_concat也有長度限制它將返回多少數據(默認情況下爲1024字節),這可以很容易地用大數據集命中。

+0

的問題是,如果我想在時間顯示10條記錄,這樣做與加盟將檢索10條記錄,但有些人會是數據的重複檢索 - 因此,爲什麼我想知道是否有另一種解決方案。正如你所提到的,我確實看過了group_concat函數,但正如你所說的那樣,它將數據轉換爲一個有點難以處理的字符串。 – Dan

+0

@Dan,在較高級別的代碼中分割一個CSV字符串並不難,95%的高級工具都支持這一點。 – Johan

+0

@Johan啊...我一直在尋找各地越來越覺得我會去與GROUP_CONCAT()的功能,雖然我現在試圖找到,讓我將其作爲關鍵=>值的最佳格式。 – Dan