我想完成一条SQL查询,但目前遇到了问题,希望有人能帮助我。
以下是表的简化版本(对于法语名称我很抱歉):
词典
ID
terme_fr
definition_fr
DomaineDuTerme
lexique_id
domaine_id
领域
ID
domaine_fr
因此,Lexique表中的一个元素可以有多个Domaine,而一个Domaine可以用于多个Lexique元素。DomaineDuTerme表作为一个中间表,包含这些多对多关系。
我希望我的查询将每个不同的Lexique元素的domaine_fr分组到记录集的单个行中。目前,该请求返回中间表中找到的每个关系的记录。当需要应用过滤器时,我需要这个中间表知道Lexique元素适用于哪些Domaine。
以下是我目前的请求:
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”元素具有多个域关联,则将获得多个记录作为结果。我希望能够获得一个单独的记录,其中多个关联将在Dom.domaine_fr字段中列出。
这种情况是否可能?我尝试使用DISTINCT和ORDER BY,以及每个版本的JOIN,但仍然获得所有关联。
我知道我可以在单独的查询或在获取记录集后的代码中完成它,但我相信有一种通过SQL的方法。我也愿意重新组织数据库模式,如果这有助于解决问题。
非常感谢!