2013-04-03 8 views
1

Привет, интересно, может ли кто-нибудь помочь мне с этим запросом. У меня есть набор данных, в котором у меня есть два столбца. Колонка A/Столбец B; позволяет называть его таблицей UpdateData.Отображение двух разных столбцов в запросе SQL

Существует также две таблицы доступа с постоянными данными, которые являются таблицами отображения для этих кодов. Одна таблица - это коды предварительного обновления (oldCodes), а другая - коды обновления после системы (NewCode). В моем наборе данных столбец A имеет коды с обновлением, а в столбце B указаны коды после обновления. Моя идея состояла в том, чтобы объединить эти две таблицы доступа старые и новые коды в одну таблицу в SQL Server (2005), как это создать таблицу combinedCodes:

Oldcode display 
=====  ======= 
RTYX45 No 
GHYUN6 No 
BYUER5 Yes 

Newcode display 
=====  ======= 
VUJNG6  Yes 
LERWS8  No 
XCRYU7  Yes 

code  display 
=====  ======= 
RTYX45 No 
GHYUN6 No 
BYUER5 Yes 
VUJNG6 Yes 
LERWS8 No 
XCRYU7 Yes 

Примечание это только пример данных, и есть намного больше строк, чем отображается.

Так что, если я присоединяюсь к updateData и комбинированным кодам, как мне установить его так, чтобы одно поле (дисплей) отображало соответствие из столбца A/B (или нет). Когда я присоединился только к одному столбцу, можно сказать, что столбец A с левым соединением в мою таблицу updateData из таблицы combinedCodes. Я получил правильные данные в поле отображения комбинированных кодов и значения null для тех, которые не совпадали.

Но затем я ввел еще одно соединение из столбца B, используя левое соединение, в мою таблицу UpdateData из CombinedCodes, а на дисплее объединенного кода были показаны старые коды, где до нулей были, что я хотел бы, но также показывались старые коды, где до того, как новые коды были используемый. Я немного перепутал с тем, что на самом деле происходит, поэтому это может быть не на 100% правильно, однако при сравнении каждого результата запроса с индивидуальным объединением результатов запроса с объединениями в столбец А и столбец В были разными, хотя одинаковое количество данных при добавлении индивидуальный счет из отдельных запросов.

select c.Fields 
--,f.Display 
,pt.Display 
from UpdateData c 
INNER JOIN PRE_CODES pt 
ON c.columnA = pt.code -- only for pre-codes 
--INNER JOIN POST_CODES f 
--ON c.columnB = f.code 

Объединение и поле прокомментированы для посткодов, а другое предназначено для предварительного кодирования. Если я включаю левое внешнее соединение для отображения нулей для пост-кодов, тогда введем 2-ое соединение и f.display плюс левое соединение для поля, оно не покажет те же результаты, что и я, каждый раз, когда я запускаю их каждый и объединяю их.

этот вид присоединиться выходит за пределы моего понимания присоединяется и я не знаю точно, что я должен здесь делать так по любому из вас, кто может помочь мне с этим

Благодарности

Эндрю

ответ

1

Если я понимаю, что вы пытаетесь сделать, я вижу пару вариантов.

Необходимо написать два запроса: по одному для каждой таблицы кода (с внутренним соединением в каждом случае, так что у вас нет нулей), а затем используйте UNION для объединения результатов и создания данных для комбинированной таблицы ,

Другой должен написать один запрос, который присоединяется к каждой таблице с левым внешним соединением, что приведет к тому, что один столбец имеет либо значение, либо нуль для одной таблицы, а другой столбец, который имеет либо значение, либо null для другой таблицы. Затем добавьте еще один столбец к результатам, который использует COALESCE, чтобы объединить эти два столбца в один ненулевой столбец.

+0

Эй, +1 для гораздо лучшего ответа, чем обычный сверхлитеральный сборник! Хороший вопрос. – criticalfix

+0

@ JacobM конечно (удары лоб ладонями) союз действительно хороший вариант! Не использовал SQL некоторое время и полностью забыл об этом! Другой вариант был на полпути тому, что я делал, но вы предоставили решение для отображения каждого результата столбца, а затем их объединения.Кроме того, я также пытался понять логику/подход двух объединений к одной таблице/отображению результатов в одном столбце, это не то, что мне приходилось делать вообще, так что это интересная проблема. – Andrew

+0

@JacobM благодарит за решение – Andrew

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