查询ManyToMany,其中只有1个结果在连接表

时间:2017-05-27 10:33:07

标签: mysql many-to-many

我在与Groupe表的ManyToMany关系中有一个Statistiquecolle表。 我想得到所有与ID为1的Groupe链接的StatistiqueColle行。

我能够选择链接到ID为1的Groupe的所有StatistiqueColle行,但我也有链接到ID为1的Groupe和其他组合的行。

这里是我的查询(statistiquecolle_groupe是statistique colle和groupe之间的链接表):

SELECT sc.id, sc.colle_id, sc.effectif, sc.moyenne, sc.mediane, sc.note100, sc.major, sc.minor
FROM statistiquecolle sc
INNER JOIN statistiquecolle_groupe scg ON sc.id = scg.statistiquecolle_id
WHERE scg.groupe_id = 1
AND sc.id = scg.statistiquecolle_id

我考虑过计算where子句中的行,只选择StatistiqueColle行,其中有一个statistiquecolle_groupe行,但我不知道该怎么做。

编辑:表格结构 enter image description here

1 个答案:

答案 0 :(得分:0)

尝试以这种方式执行此操作,我已更改连接中的表顺序,设置左连接并删除where中的AND子句,因为您已在ON子句中使用它:

SELECT sc.id, sc.colle_id, sc.effectif, sc.moyenne, sc.mediane, sc.note100, sc.major, sc.minor
FROM statistiquecolle_groupe scg 
LEFT JOIN  statistiquecolle sc ON sc.id = scg.statistiquecolle_id
WHERE scg.groupe_id = 1 AND 
      sc.id NOT IN (SELECT sc1.id
                    FROM statistiquecolle_groupe scg1 
                    LEFT JOIN  statistiquecolle sc1 ON sc1.id = scg1.statistiquecolle_id
                    WHERE scg1.groupe_id != 1)

立即尝试。希望它有效