我正在尝试完成一个 sql 查询,但它现在给我带来了麻烦,也许有人可以帮助我。
这是较短版本的表格(对不起法语名称):
词汇
ID
terme_fr
definition_fr
DomaineDuTerme
lexique_id
domaine_id
域名
ID
domaine_fr
因此,Lexique 表中的一个元素可以有多个 Domaine,一个 Domaine 可以用于多个 Lexique 元素。DomaineDuTerme 表作为包含那些多对多关系的中间体。
我希望我的查询为每个不同的 Lexique 元素在记录集的单行中重新组合 domaine_fr。目前,该请求向我返回了中间表中找到的每个关系的记录。我需要这个中间表来知道在哪些 Domaine(s) 中 Lexique 元素是在需要时应用过滤器。
到目前为止,这是我的要求:
SELECT
Lex.terme_fr,
Lex.definition_fr,
Dom.domaine_fr
FROM
((Lexique AS Lex
LEFT JOIN
DomaineDuTerme AS Ddt ON Lex.ID = Ddt.lexique_id)
LEFT JOIN
Domaine AS Dom ON Ddt.domaine_id = Dom.ID)
WHERE Lex.terme_fr='test' `
有了这个请求,如果 'test' 元素有多个 Domaines 关联,我会得到多个记录作为结果。我想获得一条记录,其中多重关联将列在 Dom.domaine_fr 字段中。
这可能吗?我确实尝试了 DISTINCT 和 ORDER BY,以及每个版本的 JOIN,但我仍然得到所有关联。
我知道我可以在单独的查询中执行此操作,或者在获取记录集后在代码中执行此操作,但我确信有一种通过 SQL 的方法。如果有帮助,我也愿意重新组织数据库模式。
非常感谢 !