2014-01-16 93 views
0

到目前爲止,我有我的downloads表非規範化。我有兩個字段 - authorcountry。它們被一個空格隔開,例如:Jack James至於authorus uk對於country非規範化表後查詢

,我決定現在是時候規範,所以我做了一個叫downloads_authors與領域的新表(da_iddownloads_idda_authorda_country),現在我有:

+-----+------------+---------+----------+ 
|da_id|downloads_id|da_author|da_country| 
+-----+------------+---------+----------+ 
|1 |1   |Jack  |us  | 
+-----+------------+---------+----------+ 
|2 |1   |James |uk  | 
+-----+------------+---------+----------+ 

到目前爲止好..但在我曾經有他們的方式,我用explode和一個非常壞的作用,我得到了想要的結果 - <flag img> Jack, <flag img> James

現在,當我在另一張表,我不能想辦法做到這一點讓他們:

SELECT * FROM downloads並列出沒有內部循環的相應作者(因爲如果我做了JOIN,那麼我會一次又一次地從downloads獲得信息)。

期望otuput是:

item 
- author 
item 
- author 
- author 

我錯了有關JOIN是它要走的路?

+0

我只是查詢所有下載,然後查詢所有作者。循環下載並將它們分配給下載ID是密鑰的陣列。然後循環播放作者,並使用下載ID將不同的作者分配給下載的子數組。 –

+0

但是,@JonathanKuhn,考慮到我目前有超過2000個項目,超過6000位作者,這不是一種壞方法嗎?考慮到每分鐘至少訪問一次頁面15-20次 – Nikola

+0

爲什麼要在單個頁面上列出很多項目?分頁。 –

回答

1

您的選項是在第一次獲得新的下載ID時加入並使用下載信息,並在您獲得新的下載ID之前忽略下載信息。或者按我說的去做,查詢數據並循環構建一個新的數組。或者,您也可以使用group_concat將作者一起加入單個字符串中。

我只是查詢所有下載,然後查詢所有作者。循環下載並將它們分配給下載ID是密鑰的陣列。然後循環播放作者,並使用下載ID將不同的作者分配給下載的子數組。