2013-10-07 5 views
1

У меня проблема:Выбор возвращает ту же строку несколько раз

В БД у меня есть две таблицы. Значение из одного столбца в первой таблице может отображаться в двух разных столбцах во втором.

Таким образом, конфигурация выглядит следующим образом:

TABLE_A: Колонка Print_group Таблицы _b: Столбцы Print_digital и Print_offset

Значение из различных строк и Print_group столбца TABLE_A могут появиться в одной строке 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) 

Проблема заключается в том, что этот запрос возвращает ту же строку из TABLE_A два раза.

Что я делаю неправильно? Каков правильный запрос?

Спасибо за вашу помощь

+0

присоединение может это. можете ли вы показать пример данных? –

+0

Если вы присоедините таблицу A к таблице B, а таблица B имеет больше столбцов, часто она будет дублировать строку из таблицы A каждый раз, когда она соединяется с B. В этом случае вы предпочли бы, чтобы повторяющиеся строки были пустыми из таблицы A? –

+0

Итак, скажем, что столбец Print_group таблицы_А имеет значения 1 в первой строке и 2 на второй. В Table_B есть только одна строка (чтобы это было просто на данный момент). Столбец Print_digital в таблице_B содержит значение 1 из первой строки таблицы_A, а столбец Print_offset таблицы_B содержит значение 2 (значения находятся в одной строке таблицы_B). Запуск вышеупомянутого запроса возвращает результат, содержащий две строки - это одна строка таблицы_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 

EDIT:

Учитывая ваши комментарии, похоже, вам просто нужно 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

Wow !!! :-) Еще раз спасибо! Это именно то, что мне нужно. Отлично работает! – user2852877

+0

@ user2852877 - np, рад, что это помогло! – sgeddes

0

Я еще один вопрос ... во-первых, понятно, правильный вариант запроса

SELECT DISTINCT A. * ИЗ TABLE_A A INNER JOIN B ON A.Print_digital = B.Print_group ИЛИ A.Print_offset = B.Print_group.

Если я хочу, чтобы он возвращал также один столбец из таблицы B, он снова возвращает повторяющиеся строки. Мой запрос (плохой один) заключается в следующем:

SELECT DISTINCT A. *, B.Id ОТ TABLE_A A INNER JOIN B = О A.Print_digital B.Print_group ИЛИ A.Print_offset = B.Print_group

Смежные вопросы