Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Связь таблиц (число прочтений - 1883 )
Nakeshi2
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 04. Июня 2008
Связь таблиц
07. Июля 2008 :: 13:59
Печать  
Тупой вопрос, но под конец дня чтото уже не шарю. Как связать 2 чаровых поля в запросе? есть значение поля в таблице1 'xxxyyy' и в таблице2 2 поля со значениями 'xxx' и 'yyy'. Как связать таблицу1 и таблицу2 по этим 3 полям. Грубо говоря 'xxxyyy' = 'xxx' + 'yyy'.

Туплю ?
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Связь таблиц
Ответ #1 - 07. Июля 2008 :: 14:06
Печать  
Цитата:
'xxxyyy' = 'xxx' + 'yyy'.

Можно конечно и так только не забудь про вот такие случаи:
'хх'   'хууу'

т.е. необходимо дополнять строку пробелами до макс. длины

  
Наверх
ICQ  
IP записан
 
Nakeshi2
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 04. Июня 2008
Re: Связь таблиц
Ответ #2 - 08. Июля 2008 :: 05:33
Печать  
Запрос следующий на самом деле :
Код
Выбрать все
SELECT     TOP 100 PERCENT dbo.SC25435.CODE AS Expr1, Контрагенты.Наименование AS Expr2, Контрагенты.Родитель AS Expr3, dbo.SC25435.*
FROM	   dbo.SC25435 LEFT OUTER JOIN
				  (SELECT     TOP 100 PERCENT TabSprGr2.DESCR AS Родитель2, TabSprGr1.DESCR AS Родитель, TabSpr.DESCR AS Наименование, TabSpr.ID,
								   TabSprGr1.ID AS TabSprGr1_ID, TabSprGr2.ID AS Expr1
				    FROM	    dbo.SC133 TabSpr LEFT OUTER JOIN
								   dbo.SC133 TabSprGr1 ON TabSpr.PARENTID = TabSprGr1.ID LEFT OUTER JOIN
								   dbo.SC133 TabSprGr2 ON TabSprGr1.PARENTID = TabSprGr2.ID
				    WHERE	(TabSpr.ISFOLDER = 2)
				    ORDER BY TabSpr.DESCR) Контрагенты ON Контрагенты.ID = dbo.SC25435.SP25430 LEFT OUTER JOIN
				  (SELECT     *, ([b]sc156.sp140 + sc156.sp141[/b]) AS keyfield
				    FROM	    dbo.SC156) _sc156 ON dbo.SC25435.ID = _sc156.keyfield
ORDER BY dbo.SC25435.CODE

 



Пример - значение поля  SC25435.ID =  '    CW   '.   sc156.sp140 = '    C   '. sc156.sp141 = '    W  '.
Пробелы не убирал, но даже при таком примитивном сложении двух чаровых полей выдает ошибку

[Microsoft][ODBC SQL Server Driver][SQL Server]Error converting data type varchar to numeric.
  
Наверх
 
IP записан
 
Nakeshi2
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 04. Июня 2008
Re: Связь таблиц
Ответ #3 - 08. Июля 2008 :: 06:01
Печать  
К сожалению мой вопрос отпал сам собой по причине того, что нельзя связать по этим полям табилы "Клиенты" и "Номенклатура"...  В таблице Номенклатуры во всех полях столбцов sp140 и sp141 стоят значения 'C' и 'W'.
Видимо должна быть какая то ещё таблица между ними, что бы всё таки связать

Клиентов

#==TABLE no 48     : Справочник Клиенты
# Name    |Descr                         |Type[A/S/U]|DBTableName|ReUsable 
T=SC25435 |Справочник Клиенты            |A          |SC25435    |1         
#-----Fields-------
# Name      |Descr               |Type|Length|Precision
F=ID        |ID object           |C   |9     |0       
F=CODE      |object code         |C   |5     |0       
F=ISMARK    |Flag Object is Marke|C   |1     |0       
F=VERSTAMP  |Version stamp       |C   |6     |0       
F=SP25430   |(P)Клиент           |C   |9     |0       
F=SP25431   |(P)Курьер           |C   |9     |0       
F=SP25432   |(P)Скидка           |N   |6     |2       
F=SP25433   |(P)Доставка         |N   |16    |2       
F=SP25477   |(P)ТипДоставки      |C   |9     |0       
#----Indexes------
# Name     |Descr         |Unique|Indexed fields                                              |DBName    
I=IDD      |of ID         |0     |ID                                                          |IDD       
I=CODE     |of CODE       |0     |CODE(UPPER)                                                 |CODE      
I=VI25430  |VI25430       |0     |SP25430                                                     |VI25430   

и Номенклатуры

#==TABLE no 33     : Справочник Номенклатура
# Name    |Descr                         |Type[A/S/U]|DBTableName|ReUsable 
T=SC156   |Справочник Номенклатура       |A          |SC156      |1         
#-----Fields-------
# Name      |Descr               |Type|Length|Precision
F=ID        |ID object           |C   |9     |0       
F=PARENTID  |ID parent obj       |C   |9     |0       
F=CODE      |object code         |C   |9     |0       
F=DESCR     |object description  |C   |50    |0       
F=ISFOLDER  |Flag - Is Line - Fol|N   |1     |0       
F=ISMARK    |Flag Object is Marke|C   |1     |0       
F=VERSTAMP  |Version stamp       |C   |6     |0       
F=SP137     |(P)ТипТовара        |C   |9     |0       
F=SP139     |(P)ВидНоменклатуры  |C   |9     |0       
F=SP140     |(P)ЕдиницаИзмерения |C   |9     |0       
F=SP141     |(P)Себестоимость    |N   |16    |2       
F=SP15933   |(P)ПорядокХраненияОт|N   |2     |0       
F=SP142     |(P)Цена             |N   |16    |2       
F=SP143     |(P)Валюта           |C   |9     |0       
F=SP148     |(P)СтранаПроисхожден|C   |30    |0       
F=SP10965   |(P)ТипНоменклатуры  |C   |9     |0       
F=SP40398   |(P)СтранаПроисхожд  |N   |2     |0       
#----Indexes------
# Name     |Descr         |Unique|Indexed fields                                              |DBName    
I=IDD      |of ID         |0     |ID                                                          |IDD       
I=PCODE    |of PARENT and |0     |PARENTID,ISFOLDER,CODE(UPPER)                               |PCODE      
I=PDESCR   |of PARENT and |0     |PARENTID,ISFOLDER,DESCR(UPPER)                              |PDESCR    
I=CODE     |of CODE       |0     |CODE(UPPER)                                                 |CODE      
I=DESCR    |of DESCR      |0     |DESCR(UPPER)                                                |DESCR      
I=VI10965  |VI10965       |0     |SP10965,DESCR(UPPER)                                        |VI10965   
I=VIP10965 |VIP10965      |0     |PARENTID,ISFOLDER,SP10965,DESCR(UPPER)                      |VIP10965   


Никто не сталкивался с такой задачей ?
  
Наверх
 
IP записан
 
zenik
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 109
Зарегистрирован: 09. Октября 2007
Re: Связь таблиц
Ответ #4 - 08. Июля 2008 :: 07:12
Печать  
Что то вы батька не то мудрите. Реквизиты
Код
Выбрать все
F=SP140     |(P)ЕдиницаИзмерения |C   |9     |0
F=SP141     |(P)Себестоимость    |N   |16    |2	    


Ну никак не могут быть связаны с клиентами из другого справочника. Лучше просто расскажи, что надо, тогда будет проще.

Если надо связать номенклатуру с клиентами, то смотря как. Либо в номенклатуру реквизит - клиент, либо в клиента - подчиненный справочник, который связан с номенклатурой. А так ты мажешь масло прямо на стол, забыв положить между ними батон.  Класс

Да, кстати, возможно тебе надо брать выборки из документов или регистров, где эти данные уже связаны. Вообщем задачу в студию.
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Связь таблиц
Ответ #5 - 08. Июля 2008 :: 08:14
Печать  
sc156.sp141 = '    W  '.

Что-то попутал, поле нумерик у тебя...
Пиши еще...
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Nakeshi2
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 04. Июня 2008
Re: Связь таблиц
Ответ #6 - 08. Июля 2008 :: 09:52
Печать  
Клиенты к номенклатуре оказалось можно связать по таблице Системы. Я на самом деле в 1с совершенно не шарю. И по долгу службы - сижу кодю. Но получилось так, что моя клиентская программа в нашей организации потребовала связи с 1с. ОСВ, акт сверки, и вот теперь скидки по организация. Таблица клиентов я так понял, равно как и таблица Системы - не входит "в стандартый пакет" 1с. И организовывались они дополнительно под нужды нашего предприятия. Весь же анализ этих бесконечных таблиц 1с я осуществляю только через файл *.dd и напрямую просмотром каждой таблицы. Поэтому довольно таки сложновато всё это осущетсвить.

Всем спасибо за ответы - как и предпологалось самым правильным ответом оказался этот Цитата:
либо в клиента - подчиненный справочник, который связан с номенклатурой. А так ты мажешь масло прямо на стол, забыв положить между ними батон.  

Номенклатура-Системы-Клент-Контрагент
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать