Не удается получить уникальные значения, соединяющие две таблицы - PullRequest
0 голосов
/ 09 марта 2012

У меня есть 2 таблицы, к которым мне нужно присоединиться и выбрать уникальные строки.Вот пример моих данных: (есть больше столбцов)

tbl1:
MB# MBName  PCCNo_PRI   Primary_IP       PCCNo_SEC          Secondary_IP    ID
100  name    0               10.1.9.10       30              10.1.9.10       1 
103  name3   17              10.1.9.27       47              10.1.9.67       4
403  name13  17              10.1.9.27       47              10.1.9.67       14

tbl2:

RTU PCC#_PRI    PCC#_SEC    STATION ADDRESS
15  0           30          6
52  12          42          1
53* 17          47          1
54  18          48          1
63  9           39          2
69* 17          47          2

Мне нужно объединить две таблицы и получить уникальные RTU вtbl2 для данного MB # в tbl1.Запрос =

SELECT t1.MB#,t2.RTU,t2.[Device Manufacturer],t2.PCC#_PRI,t2.PCC#_SEC,t2.[STATION ADDRESS] 
INTO C300_RTU_MASTERBLK_Map
FROM mbm_PCDIMasterBlk_tbl as t1, dbo.WOA_PCC_Conn_tbl as t2
WHERE t1.PCCNo_PRI = t2.PCC#_PRI

Я получаю повторяющиеся строки для таблиц 53 и 69 (* выше).53 заканчивается 2 записями;один до 103 и один 403 (69 получает то же самое).Как я могу запросить это для уникальных RTU в MB #?

1 Ответ

4 голосов
/ 09 марта 2012

Повторяющиеся строки появляются, потому что вы соединяетесь на "17", что дает 2 строки на каждой стороне

Тогда, как есть, вы не можете с этим списком SELECT.
Как вы решаете, какой t1.MB# вы хотите для столбцов t2?

Нет дополнительного столбца JOIN, который я вижу.
Таким образом, лучшее, что вы можете получить, это использовать MAX (или MIN), чтобы выбрать 403 или 103.

SELECT
   MAX(t1.MB#) AS MB#,
   t2.RTU,t2.[Device Manufacturer],t2.PCC#_PRI,t2.PCC#_SEC,t2.[STATION ADDRESS] 
INTO C300_RTU_MASTERBLK_Map
FROM 
   dbombm_PCDIMasterBlk_tbl as t1
   JOIN
   dbo.WOA_PCC_Conn_tbl as t2 ON t1.PCCNo_PRI = t2.PCC#_PRI
GROUP BY
   t2.RTU,t2.[Device Manufacturer],t2.PCC#_PRI,t2.PCC#_SEC,t2.[STATION ADDRESS] 
...