SQLAlchemy - 查询多个表并组合结果

时间:2012-07-02 02:33:10

标签: mysql join sqlalchemy flask-sqlalchemy

不再需要回答。

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

**Child**
id
name
parent_id

**Parent**
id
name

我想要做的是查询两个表但返回唯一结果(没有重复项。)我想要搜索两个表,其中Child.name是LIKE%query%并返回所有Child元素,但我也想返回Parent.name为LIKE%query%的所有Parent子节点。我相信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”,它将返回一个结果 - 名称为LIKE%Jesse%的Child。 如果用户查询“Skylar”,它将返回两个结果 - Child,其中parent_id = Parent.id WHERE Parent.name是LIKE%Skylar%,因此返回属于Skylar的两个子项。

提前谢谢!

编辑:另请注意,我将Child反馈给Parent。

1 个答案:

答案 0 :(得分:1)

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

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%'