首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相关产品算法

问相关产品算法
EN

Stack Overflow用户
提问于 2011-11-23 22:00:20
回答 2查看 981关注 0票数 1

当在一个网上商店插入产品时,我们经常需要将一些产品(又称相关产品)链接到其他产品,并且链接必须是双向的,这意味着如果我将product1链接到product2,那么product2也必须链接到product1。

最佳实践是使用额外的表'relations‘(prodid,related_prodid),还是在products表的每个产品行中以分隔字符串的形式保留相关产品的列表?

在任何一种情况下,我们都需要一个递归方法来循环通过给定的产品数组,并使用关系插入/更新表,有人能帮我解决这个算法吗?我会做PHP编码,但我想不出一个好的方法来做。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-23 22:11:58

你最好使用一个中间表related_to(id, product1, product2)

然后,您将使用以下代码:

代码语言:javascript
复制
function findRelatedProducts($product) {
  $relatedProducts = array();
  $data = mysql_query("SELECT * FROM related_to WHERE product1='$product' OR product2='$product'");
  while ($relation = mysql_fetch_array($data)) {
    $relatedProducts[] = $relation['product1'] == $product ? $relation['product2'] : $relation['product1'];
  }
  return $relatedProducts;
}

当然,您需要用您的产品表来JOIN这个表,但是由于我没有太多关于您的mysql结构的信息,如果您不知道如何操作,我将让您查看。

票数 0
EN

Stack Overflow用户

发布于 2011-11-23 22:10:59

一定要使用额外表(字符串解决方案确实不是一个好主意),最好将它组织起来,这样主键最低的产品就会放在关系中的第一位(允许一些优化);不需要复制关系(即同时拥有和)。至于递归方法,不清楚关系的值是从哪里得到的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8243441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档