好的,我有表 niveles、categoria 和 niveles_has_categoria
idcategoria|类别
1| child
2|青少年
3|成人
idNivelCat|niveles_idniveles|categoria_idcategoria
1|1|3
2|3|2
3|3|1
4|3|3
5|2|3
第三个表是另外两个表的 n:m 关系,所以我试图通过两个表的 id 获取其他数据,这是我的查询
SELECT n.nombre_nivel, c.categoria FROM niveles n, categoria c WHERE n.idniveles in (SELECT n.idniveles FROM niveles n INNER JOIN niveles_has_categoria nc ON n.idniveles=nc.niveles_idniveles )
AND c.idcategoria in (SELECT c.idcategoria FROM categoria c INNER JOIN niveles_has_categoria nca ON c.idcategoria=nca.categoria_idcategoria)
但它显示的是这样的:
nombre_nivel|类别
一级| child
一级|青少年
一级|成人
2 级| child
2 级|青少年
2 级|成人
3级| child
3 级|青少年
3级|成人
什么时候应该是这样的:
nombre_nivel|类别
一级|成人
3 级|青少年
3级| child
3级|成人
2 级|成人
如果有人能帮忙就太好了!!
最佳答案
尝试:
Select n.nombre_nivel, c.categoria from niveles_has_categoria nc
inner join niveles n on nc.niveles_idniveles = n.idniveles
inner join categoria c on nc.categoria_idcategoria = c.idcategoria
想法是从具有所需结构的表开始,然后在每个步骤中仅添加属于该记录的条目。
关于mysql - 内连接查询 n :m,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33029551/