2013-10-07 123 views
1

我有以下問題:選擇返回同一行多次

在DB中,我有兩個表。第一個表中的一列中的值可以出現在第二個表中的兩個不同列中。

所以,配置如下:

TABLE_A:柱Print_group 表_B:列Print_digital和Print_offset

來自不同的行和表-A的Print_group列中的值可以出現在一行Table_B但在不同的列中。

我有以下查詢:

SELECT DISTINCT * FROM Table_A 
INNER JOIN B ON (Table_A. Print_digital = Table_B.Print_group OR 
Table_A.Print_offset = Table_B.Print_group) 

的問題是,這個查詢從表-A兩次返回同一行。

我做錯了什麼?什麼是正確的查詢?

謝謝您的幫助

+0

連接可以做到這一點。你可以展示示例數據嗎? –

+0

如果您將表A連接到表B並且表B具有更多列,那麼通常它會在每次連接B時複製表A中的行。在這種情況下,您希望重複行在表A中爲空嗎? –

+0

因此,假設Table_A的Print_group列在第一行的值爲1,第二行的值爲2。在Table_B中只有一行(現在保持簡單)。 Table_B的Print_digital列包含來自Table_A第一行的值1,並且Table_B的Print_offset列包含值2(這些值位於Table_B的同一行上)。運行上述查詢返回包含兩行的結果集 - 它是Table_B的一行返回兩次... – user2852877

回答

0

如果我正確理解你的問題,你只需要澄清你的領域來自Table_A

SELECT DISTINCT A.* 
FROM Table_A A 
    INNER JOIN B ON A.Print_digital = B.Print_group 
     OR A.Print_offset = B.Print_group 

編輯:

給出您的評論,看起來像你只需要SELECT DISTINCT B.*

SELECT DISTINCT B.* 
FROM Table_A A 
    INNER JOIN B ON A.Print_digital = B.Print_group 
     OR A.Print_offset = B.Print_group 
+0

謝謝你的回答。我會在下午嘗試一下,並讓你知道結果:-) – user2852877

+0

哇! :-)再次感謝你!這正是我需要的。它像一個魅力! – user2852877

+0

@ user2852877 - np,很高興幫助! – sgeddes

0

我還有另一個問題......首先,要清楚,正確的查詢版本

SELECT DISTINCT A. * FROM 一個表-A INNER JOIN B開A.Print_digital = B.Print_group 或A.Print_offset = B.Print_group。

如果我想要它也返回B表中的一列,它將再次返回重複的行。我查詢(壞的)是下列操作之一:

SELECT DISTINCT A. *,B.Id FROM表-A一個 INNER JOIN B開A.Print_digital = B.Print_group OR A.Print_offset = B.Print_group