Условие соединения запроса - PullRequest
1 голос
/ 20 декабря 2010

У меня есть две таблицы с именем account и назначенная группа.В таблице учетных записей есть два столбца с именами ID и sourceaccount. В назначенной группе у меня есть два столбца с именами ID и назначенная группа.

Я хочу выбрать идентификатор путем объединения таблиц учетных записей и назначенной группы.Я сделал что-то вроде этого:

select a.ID
from account a 
  left outer join assignedgroup b 
   on a.sourceaccount = b.assignedgorup

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

sourceaccount:

sample
sample

итогда как значения в назначенной группе такие:

назначенная группа:

sample-L1
sample-P-L1

Кто-нибудь может мне помочь, как объединить эти две таблицы?

Я хочу получить все идентификаторывсякий раз, когда есть выборочное значение и в sourceaccount, и в назначенной группе.

Он сравнивает sample с sample-L1, поскольку они не равны, он возвращает ноль, но я хочу идентификатор, даже если он имеет такие значения.Я имею в виду, что если какая-то часть значений столбца совпадает, то я также хочу, чтобы эти значения отображались

Ответы [ 3 ]

1 голос
/ 20 декабря 2010
SELECT  a.id
FROM    account a
LEFT JOIN
        assignedgroup b
ON      b.assignedgorup LIKE a.sourceaccount + '-%'
0 голосов
/ 20 декабря 2010

Поскольку фактические данные в этих двух таблицах на самом деле не совпадают, вы не можете объединить эти строки в этих таблицах, если не начнете делать довольно широкие предположения о характере данных в этих таблицах. Например, это может работать:

SELECT a.ID
 from Account a
  left outer join AssignedGroup b
   on a.sourceaccount = left(b.assignedgroup, 6)

или, более обобщенно,

SELECT a.ID
 from Account a
  left outer join AssignedGroup b
   on a.sourceaccount = left(b.assignedgroup, len(a.sourceaccount))

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

0 голосов
/ 20 декабря 2010

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

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