到目前为止,我只处理过 php 中的一对一关系,但我遇到了一个涉及一对多关系的问题。我已经坐了几天了,但没有运气,所以我迫切希望有人介入并在我失去理智之前向我展示解决方案。
在我的数据库中有一系列 url,这些 url 由 SELECT 查询以及来自不同表的各种其他字段接收。每个 url 至少有一个与其关联的类别,但可以有多个类别。所以在我的结果中我可能会看到一些看起来有点像这样的东西:
link_id = 3 url= 'http://www.somesite1.com' category = 'uncategorised'
link_id = 4 url= 'http://www.somesite2.com' category = 'travel'
link_id = 4 url= 'http://www.somesite2.com' category = 'fun'
link_id = 4 url= 'http://www.somesite2.com' category = 'misc'
link_id = 3 url= 'http://www.somesite3.com' category = 'uncategorised'
我已经让这个工作了,有点。当我使用 while 循环和 mysql 获取数组循环并打印它们时,结果看起来与上面的完全一样。那太好了,除了我需要的是它读取如下内容:
link_id = 4 url = 'http://www.somesite2.com' category = 'travel fun misc'
这样基本上每个 url 的所有类别都会以某种方式组合起来,因为它们被打印出来。我的第一次尝试导致我尝试嵌套 while 循环,但它不起作用,我不确定这是否可行。除此之外,我想知道我是否需要一个多维数组(完全猜测,我以前从未使用过)。
我按上面的链接 id 对这些结果进行排序,所以我知道当前循环迭代中的链接 id 是否与上一次迭代中的链接 id 相匹配 - 那么我有一个具有多个类别的东西..我想我是非常接近,但我就是无法弄清楚。
有任何想法吗?
mysql中还有“GROUP_CONCAT”函数。
这应该正是您想要实现的目标。
就像是 :
SELECT url, GROUP_CONCAT(category) AS categories FROM yourtable GROUP BY url
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)