0

我正在尝试在 MySQ 中加入三个表,但是当我按照自己的方式进行操作时,我得到了值不正确的重复行。看来我做得不对。

我需要加入三个表:

nt_stentyper
id | tagsten | varenr_tilb | prod_type | dk | no | sv

nt_tunliste
varenummer | tunnummer | beskrivelse 

nt_priser
varenummer | pris

我希望找到的数据按varenummerinnt_tunlistent_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

4

3 回答 3

2

第二个连接的条件应该与nt_priser,但它是第一个连接条件的副本。

于 2012-07-23T13:18:07.640 回答
0

这是因为内连接中使用的任何一个表都具有连接中使用的列的重复值。

为避免这种情况,您可以从表中删除重复项,或者在选择记录时使用GROUP BY nt_stentyper.varenr_tilb 或使用。SELECT DISTINCT *

于 2012-07-23T13:16:20.827 回答
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

在另一个不相关的说明中,我强烈建议您使用英语进行所有编码,因为您永远不知道是否有人(非丹麦人)稍后会查看您的代码:)

于 2012-07-23T13:23:55.990 回答