Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите разобраться с соединением  [new]
Andrew_vb1110
Member

Откуда: Симферополь
Сообщений: 540
В поле с.code может быть код (до 5 знаков) а может быть штрихкод 13 знаков или 8 знаков.
Мне нужно выбирать сделать так, что если code < 5 знаков соединение по коду, а если 13 знаков или 8 знаков, то соединение по штрихкоду. По коду я сделал... а по штрихкоду не знаю как сделать в одном select

select c.code,						
ISNULL(a.NameArticle1, 'ВНЕ АРТИКУЛОВ') as NameArticle1,
ISNULL(a.ID, 0) as ID
from Client_AB_cash_check c left join article a on a.code = c.code


Результат:
NULL ВНЕ АРТИКУЛОВ 0
NULL ВНЕ АРТИКУЛОВ 0
NULL ВНЕ АРТИКУЛОВ 0
NULL ВНЕ АРТИКУЛОВ 0
NULL ВНЕ АРТИКУЛОВ 0
NULL ВНЕ АРТИКУЛОВ 0
NULL КЛЕЙ КМЦ 400ГР ШТ/20 21697

первые артикула надо соединить по barcode
6 июл 12, 12:15    [12827733]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с соединением  [new]
Glory
Member

Откуда:
Сообщений: 104751
Andrew_vb1110
а по штрихкоду не знаю как сделать в одном select

Открыть изученный вами список строковых функций на странице, посвещенной функции LEN
6 июл 12, 12:18    [12827760]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с соединением  [new]
Andrew_vb1110
Member

Откуда: Симферополь
Сообщений: 540
Glory
Andrew_vb1110
а по штрихкоду не знаю как сделать в одном select

Открыть изученный вами список строковых функций на странице, посвещенной функции LEN


Я догадываюсь, что надо использовать функцию len, но практически не знаю как сделать если
case len(a.code) when 13 then  *** end


Куда этот case правильно вставить?
6 июл 12, 12:24    [12827820]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с соединением  [new]
Andrew_vb1110
Member

Откуда: Симферополь
Сообщений: 540
Andrew_vb1110, up
6 июл 12, 16:45    [12830129]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с соединением  [new]
RubinDm
Member

Откуда: SPb
Сообщений: 461
Andrew_vb1110,
штрихкоды - не более 5-ти символов. баркоды - не менее 8-ми символов.
Это означает, что штрихкоды и баркоды вообще никак не пересекаются.
Это означает, что нет нужды проверять длину строк.
Допишите условие or a.barcode = c.code в Ваш джойн и Вам все будет.
6 июл 12, 20:34    [12831381]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с соединением  [new]
Andrew_vb1110
Member

Откуда: Симферополь
Сообщений: 540
RubinDm
Andrew_vb1110,
штрихкоды - не более 5-ти символов. баркоды - не менее 8-ми символов.
Это означает, что штрихкоды и баркоды вообще никак не пересекаются.
Это означает, что нет нужды проверять длину строк.
Допишите условие or a.barcode = c.code в Ваш джойн и Вам все будет.

Спасибо большое. Буду пробовать.
6 июл 12, 21:43    [12831618]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с соединением  [new]
GloryV
Member

Откуда:
Сообщений: 33
Andrew_vb1110
Glory
пропущено...

Открыть изученный вами список строковых функций на странице, посвещенной функции LEN


Я догадываюсь, что надо использовать функцию len, но практически не знаю как сделать если
case len(a.code) when 13 then  *** end



Куда этот case правильно вставить?


CASE LEN('ABCD') 
 WHEN 4 THEN 4 
 ELSE 9 
END
9 июл 12, 07:10    [12836839]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить