首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将id数组存储在一个db字段中,并将其分解到一个连接表中--使用什么sql?

将id数组存储在一个db字段中,并将其分解到一个连接表中--使用什么sql?
EN

Stack Overflow用户
提问于 2012-04-30 01:03:16
回答 1查看 1.2K关注 0票数 0

我得出的结论是,我第一次快速修复将id数组存储在单个数据库字段(1,5,48)中可能不是最好的方法,但如果我将它们分解为“父项id”(单数)的连接表,然后将链接到单独表的子关联项id (multiple),则会更好。

但是现在我不知道要使用什么mysql查询来获得匹配。

因此,提交了一个搜索表单,其中"related_item“数组为"1,5,8”,而我的"parent_items“之一在连接表中有"1”和"8“的相关项匹配。

那么,什么mysql查询会返回这些匹配呢?

更新:

  • 我有一张桌子“公司”,可能是汇丰银行和TOPSHOP的记录。
  • 有一张单独的“行业”表格--可能是“银行”和“零售”
  • --有一个连接表,它是company_id和industry_id,它将两者结合在一起--

因此,如果有人提交了一份搜索表格,以查找哪里的行业=“银行”或“零售”,我如何返回“topshop”和“hsbc”的公司记录

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-30 01:15:47

就像这样..。如果你是在寻找孩子或父母,我不清楚你是怎么描述的。我想你是想搜查孩子们所以:

代码语言:javascript
运行
复制
-- SEARCH CHILDREN --
SELECT p.*, c.* FROM child_table c
LEFT JOIN linking_table l ON (p.id = l.child_table_id)
LEFT JOIN parent_table p ON (l.parent_item_id = p.id)
WHERE c.id IN (1,5,4,8)
-- OPTIONAL AND CLAUSE for p.id = ? --

如果您打算搜索父母,那么您只需重做订单,尽管您可以使用完全相同的查询,但您的WHERE子句将位于p.id而不是c.id上。

不过,请注意,这将为每个孩子提供1行,因此您将多次拥有相同的父级。如果您不需要实际的子数据,那么可以使用DISTINCT只返回一个实例。

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

https://stackoverflow.com/questions/10377391

复制
相关文章

相似问题

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