我正在尝试使用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获取所有行。怎么避免这个?
答案 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获得一行。