从多个表中选择连接的信息返回太多

时间:2013-11-19 12:17:35

标签: mysql sql select join

我正在尝试使用JOIN从三个表中选择数据,但是我得到了太多行。我所拥有的(简化)是:

table_relations (id1, id2) 
table1_names (id1, name1) and 
table2_names (id2, name2, group).

table_relations包含id1 and id2的唯一组合 table1_names包含一组唯一的id1 and name1。 但table2_names包含许多重复的id2, name2 and group行。

table_relations是主要表格。 我想选择id1,id2,name1,name2,其中group = 1而不会获得重复的行。 我试过了:

SELECT t2.name2, tr.id1, tr.id2, t1.name1 
FROM table_relations tr
JOIN table2 t2 ON tr.id2 = t2.id2
JOIN table1 t1 ON tr.id1 = t1.id1
WHERE t2.group = 1

我从表t2获取所有行。怎么避免这个?

2 个答案:

答案 0 :(得分:1)

这应该照顾你的双行。虽然我不是100%肯定yoru确切的数据模型...

SELECT DISTINCT t2.name2, tr.id1, tr.id2, t1.name1 
  FROM table_relations tr
  JOIN table2 t2 ON tr.id2 = t2.id2
  JOIN table1 t1 ON tr.id1 = t1.id1
 WHERE t2.group = 1

如果这不是您所需要的,请指定所需的输出以及到目前为止的结果:)

答案 1 :(得分:-2)

您可以添加

GROUP BY t2.id2

然后你应该只为表2中的每个id2获得一行。