2012-07-23 65 views
0

我想在MySQ中連接三個表,但是當我這樣做時,我得到的重複行的值不正確。看來我沒有正確地做。在MySQL中連接3個表格給出重複行的值

我有三個表,我需要加入:

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

nt_tunliste 
varenummer | tunnummer | beskrivelse 

nt_priser 
varenummer | pris 

我希望能夠找到的數據是由varenummernt_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

+2

第二次連接的條件應該與nt_priser有關,但它是第一個連接條件的副本。 – mindandmedia 2012-07-23 13:03:04

+0

@mindandmedia:您應該將其作爲答案發布。 – eggyal 2012-07-23 13:04:11

回答

2

第二次加入的條件應與nt_priser有關,但它是第一次加入條件的副本。

+0

Garh ....沒有看到!謝謝! – 2012-07-23 13:22:49

0

這是因爲內連接中使用的任何一個表都具有連接中使用的列的重複值。

爲了避免這種情況,你可以從該表 刪除重複或使用GROUP BY nt_stentyper.varenr_tilb 或使用SELECT DISTINCT *而選擇記錄。

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 

在其它不相關的說明,我會強烈建議你做你的英文編碼,因爲你永遠不知道,如果任何人,非丹麥,是要去看看你的代碼,在以後的時間:)