我想从我的表revistas中选择所有数据,并从其他表中选择匹配的值而不重复数据。
这是我的数据库的图像 https://dl.dropboxusercontent.com/u/31988662/a.png
我想完全按照以下方式导出数据,所有idrevistas都包含来自其他表格的所有匹配ID
idrevistas idsentido_efeito idamostra idnatureza_efeito idfatores_afeta_efeito
---------------------------------------------------------------------------------
1 1 1,2,3 1 1
2 2 2 2 2
3 1 2,3 1,2 2
4 2 1,2 4,5 2,1
我能得到的最接近的是这样一个简单的连接:
SELECT rev.nome_revistas,se.nome_sentido_efeito, rev.titulo_revistas, rev.subtitulo_revistas_autor_ano, rev.abstract, group_concat(ams.nome_amostra),se.nome_sentido_efeito,group_concat(ne.nome_natureza_efeito), fae.nome_fatores_afeta_efeito
FROM revistas_has_amostra as rha
JOIN revistas as rev ON rha.revistas_idrevistas = rev.idrevistas
JOIN amostra as ams ON rha.amostra_idamostra = ams.idamostra
JOIN sentido_efeito as se ON rev.sentido_efeito_id = se.idsentido_efeito
JOIN revistas_has_natureza_efeito as rhne ON rev.idrevistas = rhne.revistas_idrevistas
JOIN natureza_efeito as ne ON rhne.natureza_efeito_idnatureza_efeito = ne.idnatureza_efeito
JOIN revistas_has_fatores_afeta_efeito as rhfae ON rev.idrevistas = rhfae.revistas_idrevistas
JOIN fatores_afeta_efeito as fae ON rhfae.fatores_afeta_efeito_idfatores_afeta_efeito = fae.idfatores_afeta_efeito
GROUP BY rev.idrevistas
但是这会多次返回amostra_id表中的匹配
idrevistas idsentido_efeito idamostra idnatureza_efeito id_fatores_afet..
-----------------------------------------------------------------------------------
1 1 1,2,3,1,2,3,1,2,3 1,1,1 1
2 2 2 2 2
3 1 2,3,2,3 1,2,1,2 2
4 2 1,2,1,2 4,5,4,5 2,1
答案 0 :(得分:0)
只需添加GROUP BY amostra_id?
GROUP BY rev.idrevistas, rev.amostra_id
答案 1 :(得分:0)
尝试将DISTINCT
添加到所有GROUP_CONCAT
即
SELECT rev.nome_revistas
,se.nome_sentido_efeito
,rev.titulo_revistas
,rev.subtitulo_revistas_autor_ano
,rev.abstract
,GROUP_CONCAT(DISTINCT ams.nome_amostra)
,se.nome_sentido_efeito
,GROUP_CONCAT(DISTINCT ne.nome_natureza_efeito)
,fae.nome_fatores_afeta_efeito
FROM ...