2013-03-10 131 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

相关问题