2013-03-10 80 views
1

我真的找不到任何有用的東西。我使用Codeigniter和MySQL創建了我自己的管理面板,除了多對多關係以外,一切都完成了。處理與Codeigniter和MySQL的多對多關係的最佳方法是什麼?

主表是產品表。我有5對多關係(分類,材料,顏色,標籤,城市)。他們每個人都有5個表,這些列(ID和類別/標籤/城市的名稱......),當然有兩個表之間有產品ID和另一個表。首先,我想列出所有的產品在一個表中,並在列中我想要列有類別,材料,標籤等,並在對應的單元格中列出所有要列出的項目逗號...

下面是一行的樣子。

| ID |名稱|說明|類別1,類別2,... |材料1,... | Tag1,Tag2,Tag3,Tag4,... |

我希望你能理解我。接下來,希望Add函數看起來很簡單,但我認爲Update函數應該非常棘手,因此對於那裏的任何幫助也都很感激,儘快解決它的速度。 我想首先我應該檢查所有選定的項目,檢查是否有任何不在鏈接表中的新條目,然後檢查是否有任何未選中的條目在鏈接表中刪除。 如何做到最優化?

回答

2

這不是直接的代碼事情,更多的是SQL的事情。

管理顯示是一個簡單的部分。您可以加入所有相關表格並GROUP BY您的product_id,以便您的結果集只顯示一次產品。然後,您可以使用GROUP_CONCAT function of MySQL將每行的相關表格文件組分組。

這個的性能真的取決於應用程序及其用法。例如,使用我們的應用程序,它可以更快速,更快速地響應,以便product_id返回的每行運行多個查詢來獲取其他信息,而不是運行單個查詢來獲取一次點擊中的所有信息。所以,你必須對它進行測試。

隨着更新,是的,它可能是凌亂的。一種方法是刪除所有現有的product_id,然後添加所有提交的。另一種方法是根據提交的內容檢查現有內容,只添加新內容並刪除不匹配的內容。我希望這對你有意義:)

+0

你能告訴我一些示例代碼嗎?我(想我)知道如何找到單一產品的所有類別,材料,城市,標籤等。我將搜索所有表格以獲取相應的產品ID,我想就是這樣。 5多對多關係,5個不同的查詢,我認爲它不能解決更簡單。 但是關於列出產品的所有表格(顯示1000個產品的列表),並在每一行中列出所有標籤,所有城市,所有類別......?你能告訴我如何使用你告訴我的嗎? – MarkC 2013-03-10 09:02:31

+0

我有這些表: 產品,標籤,產品標籤,城市,產品,材料,Prod_Mat。 這足夠了,如果你讓我看看他們中的兩個,我會做其餘的。在每個表中都有ID字段和名稱字段。 – MarkC 2013-03-10 09:04:53

+0

可能是你應該嘗試基於建議的解決方案(或任何其他方式)實現某些東西,並返回到您遇到的具體問題的計算器。 – dakdad 2013-03-10 17:30:33

相關問題