合并来自两个不同MySql查询的两个不同数组

时间:2012-01-24 22:01:42

标签: php mysql arrays join merge

我的网站有一个我希望将操作合并到一起的朋友Feed。对于前者,现在,它只返回您的朋友搜索过的内容。但是,我还希望它能够在相同的Feed中显示他们最喜欢的内容,从而按时间顺序排列搜索和收藏夹。

问题是,我无法找到解决这个问题的好方法。我不能使用MySql UNION,因为我要从中拉出的两个表(搜索表和收藏表)没有相同数量的列,我需要从一个到另一个的更多列。

我查看了JOIN,但很难,因为我已经将两张桌子连在一起以返回搜索结果。

我在想什么 - 有没有办法分别进行两个查询,将输出作为数组获取并根据时间列将它们与php结合起来?

2 个答案:

答案 0 :(得分:1)

你不能让列号匹配,或者将空白列添加到那些沿着这些行的较少或者某些东西的那些并且仍然使它们匹配吗?

答案 1 :(得分:0)

是的,可以单独执行两个查询,将输出作为数组获取并将它们与php结合使用,但不是,您不希望这样做。一旦你意识到自己没有足够的搜索和收藏,但是你还需要喜欢和帖子,你就会打开一个难以维护的代码混乱。

我的建议是:

  • 对于每个表,创建一个相应的视图,所有这些视图共享 结构。我正在模仿接口/实现模式 其他语言在这里。确保您的视图结构具有时间戳,描述性列,用户ID等,无论您需要什么
  • 跨接口执行合并查询:SELECT * FROM searches_view WHERE ... UNION SELECT * FROM favorites_view WHERE ... ORDER BY date_submitted DESC

通过这种方式,您的应用可以依靠标准化的“界面”通过“searching_view”等进行搜索,因此扩展到更多项目类型是微不足道的。