0

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

但现在我不确定使用什么 mysql 查询来获取匹配项。

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

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

更新:

  • 我有一张“公司”表,可能是 HSBC 和 TOPSHOP 作为示例记录。
  • 有一个单独的“行业”表,可能是“银行”和“零售”
  • 有一个连接表,它是 company_id 和 industry_id 将它们配对在一起

因此,如果有人提交了行业 = 'banking' 或 'retail' 的搜索表单,我将如何返回 'topshop' 和 'hsbc' 的公司记录

4

1 回答 1

1

像这样的东西......如果你正在“寻找”孩子或父母,我不清楚你的描述。我认为您的意思是搜索孩子:

-- 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 IN 子句将是 onp.id而不是c.id.

请注意,这将为孩子们每场比赛获得 1 行,因此您将多次拥有同一个父母。如果您不需要实际的子数据,那么您可以DISTINCT只返回一个实例。

于 2012-04-30T01:15:47.070 回答