Присоединение к более чем одному параметру - PullRequest
1 голос
/ 23 марта 2012

Когда я присоединяюсь к одному параметру, я получаю результаты:

join

SalesMapping m

on

(c.[MLIS Practice ID] = m.MLIS)

однако, когда я присоединяюсь к 2 параметрам, я получаю 0 результатов:

join

SalesMapping m

on

(c.[MLIS Practice ID] = m.MLIS and ltrim(rtrim(c.[QuikLab Practice Code]))=ltrim(rtrim(m.[Practice Code])))

я проверял свои исходные таблицычтобы проверить, приведет ли это объединение к каким-либо результатам, и это, безусловно, будет!

, вот весь мой запрос:

select 
[rep name]=m.[Sales Rep],
[css name]=m.[CSS Rep],
m.[Practice Name],
m.[Practice Code],

[MLIS Code]=m.[MLIS],
[Yesterday Volume]=(select 
                    COUNT([accession id]) 
                    from SpecimenCount 
                    where [MLIS Practice ID]=m.[MLIS]
                    and [Date Received]=CAST(getdate()-2 as DATE)),
[Today Volume] = (select 
                    COUNT([accession id]) 
                    from SpecimenCount 
                    where [MLIS Practice ID]=m.[MLIS]
                    and [Date Received]=CAST(getdate()-1 as DATE)),
[Rep Email]=m.[sales rep],
[CSS Email]=m.[css rep],
[Manager Email]=m.manager

from 

SpecimenCount c

join

SalesMapping m

on

(c.[MLIS Practice ID] = m.MLIS and c.[quiklab practice code]=m.[practice code])

join 

ManagerNames

on ManagerNames.Name = m.Manager

, почему мой запрос (объединение в двух условиях) возвращает 0 результатов?

вот мой мыслительный процесс для следующего:

c.[MLIS Practice ID] = m.MLIS and c.[quiklab practice code]=m.[practice code]

мы определенно можем объединить два набора данных, вот почему:

+----------+----------+---------------+---------------+-----------------------+-----------+------------------+------------------+--------------+-----------+-----------+---------------+
| rep name | css name | Practice Name | Practice Code | quiklab practice code | MLIS Code | MLIS Practice ID | Yesterday Volume | Today Volume | Rep Email | CSS Email | Manager Email |
+----------+----------+---------------+---------------+-----------------------+-----------+------------------+------------------+--------------+-----------+-----------+---------------+
| na       | na       | na            | SCPMA         | SCPMA                 |    100004 |           100004 |               10 |            3 | na        | na        | na            |
+----------+----------+---------------+---------------+-----------------------+-----------+------------------+------------------+--------------+-----------+-----------+---------------+

, как вы можете видетькоды 100004 и SCPMA совпадают и ДОЛЖНЫ объединяться

Ответы [ 3 ]

2 голосов
/ 23 марта 2012

Итак, вы убедились, что существуют существующие MLIS и практические коды, которые могут присоединиться ... но на самом деле есть и третье условие, когда вы присоединяетесь к менеджеру. Я не вижу менеджера в ваших примерах данных, но я готов поспорить, что нет менеджера, который соответствует паре кодов mlis / Practice.

Как правило, простой способ идентифицировать ситуацию, подобную этой, состоит в том, чтобы просмотреть ваши объединения по одному и закомментировать или превратить их в левое соединение. Как только данные возвращаются, вы знаете, что является причиной проблемы.

1 голос
/ 23 марта 2012

ОК, возможно, у вас нет пробелов, но есть скрытые непечатные символы (например, TAB)? Это приведет к сбою соединения.

1 голос
/ 23 марта 2012

Можете ли вы определить наличие хотя бы одной строки, которая должна быть в вашем наборе результатов?Можете ли вы проверить, что данные есть в ваших таблицах?Чаще всего у меня возникали проблемы с использованием неверного имени для столбца.

о, и не делайте частичного алиасинга, это доставило мне много проблем, в конечном итоге это вызовет проблемытакже.(Alias ​​ManagerNames)

Сначала убедитесь, что есть совпадения между MangerName и SalesMapping на MangerName.Name=SalesMapping.Manager

select distinct Name from ManagerNames

select distinct Name from ManagerNames
except 
select distinct Manager from SalesMapping

--get less rows with the second query.

Во-вторых, убедитесь, что есть совпадения между SpecimenCount

select distinct [MLIS Practice ID],[quiklab practice code] from SpecimenCount

select distinct [MLIS Practice ID],[quiklab practice code] from SpecimenCount
except
select MLIS,[practice code] from SalesMapping.

--get less rows with the second query.

Возможно, вы обнаружите, что данные не совпадают.Затем вам придется вернуться к разработчикам и получить больше информации о том, как таблицы были заполнены, чтобы вы могли сопоставить столбцы.Поскольку никто не удосужился сделать имена столбцов идентичными, я предполагаю, что сопоставление НЕ будет простым.

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...