0

不再需要答案。

我的 MySQL 数据库中有两个表,如下所示:

**Child**
id
name
parent_id

**Parent**
id
name

我想要做的是查询两个表,但返回唯一的结果(没有重复)。我希望在 Child.name 为 LIKE %query% 的地方搜索两个表并返回所有子元素,但我也想返回所有子元素Parent.name 是 LIKE %query% 的父级。我相信 JOIN 可能会起作用,但我不熟悉如何使用 JOIN。

这是一些示例数据和输出:

Child:
id          1
name        Jesse
parent_id   1

Child:
id          2
name        Walter Jr.
parent_id   1

Parent:
id          1
name        Skylar

如果用户查询“Jesse”,它将返回一个结果 - Child,其中名称为 LIKE %Jesse%。如果用户查询“Skylar”,它将返回两个结果 - Child where parent_id = Parent.id WHERE Parent.name is LIKE %Skylar%,从而返回属于 Skylar 的两个 Child。

先感谢您!

编辑:还要注意,我有 Child backref'd to Parent。

4

1 回答 1

1

您可以使用UNION将来自一个查询(仅在子表上)的匹配项与来自第二个查询(在与子表连接的父表上)的匹配项组合起来:

SELECT id, name
FROM   Child
WHERE  name LIKE '%query%'

UNION

SELECT Child.id, Child.name
FROM   Parent JOIN Child ON Child.parent_id = Parent.id
WHERE  Parent.name LIKE '%query%'
于 2012-07-02T02:38:54.083 回答