MySQL查询 - 从JOIN表中获取类似于嵌套数组的“额外”信息列表

时间:2011-10-03 17:55:52

标签: php mysql

这在标题中有点难以解释,但我应该可以在这里。我有两个看起来像这样的表:

Table 1:
    -id
    -created
    -last_modified
    -title

Table 2:
    -id
    -parent_id
    -type
    -value

结构有点类似于以下内容:表1中的项目可以具有与之关联的许多属性。每个属性都列在第二个表中,引用返回原始属性。

我遇到的问题是,我希望能够从表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,因为这是现有平台正在使用的。

我希望我对我的要求有所了解:)任何帮助都将不胜感激!

1 个答案:

答案 0 :(得分:0)

听起来更像是一个显示问题。加入的查询是最好的方法。然后,您只需在检索/显示代码中使用一个简单的循环来检查何时从一个Table1记录转换到另一个Table1记录并根据需要调整输出。

您可以使用MySQL的group_concat()函数将所有子记录检索为单个字段,但是您最终会(基本上)结束整数串联数据,而不是连接查询/显示循环的单个记录提供。 group_concat对它将返回多少数据(默认为1024字节)也有长度限制,可以很容易地使用大型数据集。