我正在尝试在MySQ中加入三个表,但是当我按照我的方式执行时,我会得到具有不正确值的重复行。似乎我没有正确地做到这一点。
我需要加入三个表:
nt_stentyper
id | tagsten | varenr_tilb | prod_type | dk | no | sv
nt_tunliste
varenummer | tunnummer | beskrivelse
nt_priser
varenummer | pris
我希望找到的数据按varenummer
和nt_tunliste
中的nt_priser
分组。 varenummer
采用varenr_tilb
。
我试过了:
SELECT * FROM nt_stentyper
INNER JOIN nt_tunliste ON nt_stentyper.varenr_tilb = nt_tunliste.varenummer
INNER JOIN nt_priser ON nt_stentyper.varenr_tilb = nt_tunliste.varenummer
WHERE nt_stentyper.tagsten = 1
ORDER BY nt_stentyper.prod_type ASC
...但是这给了我重复的行,如:
ID tagsten varenr_tilb prod_type dk no sv varenummer tunnummer beskrivelse varenummer pris_dk
1 1 12345678 1 1 1 1 12345678 12131415 RT 801 11111111 213
1 1 12345678 1 1 1 1 12345678 12131415 RT 801 12345678 200
5 1 11111111 5 1 1 1 11111111 11111112 Gratbånd 11111111 213
5 1 11111111 5 1 1 1 11111111 11111112 Gratbånd 12345678 200
......这不是我想要的。
查询应该只显示一个varenummer
。
答案 0 :(得分:2)
第二次加入的条件应与nt_priser
有关,但它与第一次加入条件重复。
答案 1 :(得分:0)
这是因为内连接中使用的任何一个表都具有连接中使用的列的重复值。
要避免这种情况,您可以从表中删除重复项
或使用GROUP BY nt_stentyper.varenr_tilb
或在选择记录时使用SELECT DISTINCT *
。
答案 2 :(得分:0)
不要选择*,而只选择您需要的字段。像这样:
SELECT id, tagsten, nt_stentyper.varenr, prod_type, dk, no, sv, tunnummer, beskrivelse, pris_dk FROM nt_stentyper
INNER JOIN nt_tunliste ON nt_stentyper.varenr_tilb = nt_tunliste.varenummer
INNER JOIN nt_priser ON nt_stentyper.varenr_tilb = nt_tunliste.varenummer
WHERE nt_stentyper.tagsten = 1
ORDER BY nt_stentyper.prod_type ASC
在另一个不相关的说明中,我强烈建议你用英语编码,因为你永远不知道是否有人(非丹麦语)会在以后查看你的代码:)