Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Присоединить таблицу  (Прочитано 12774 раз)
0 Пользователей и 1 Гость смотрят эту тему.
katerina_sql
Гость
« : 03-12-2008 16:44 » 

Здравствуйте,
мне требуется присоединить к таблице А некоторые колонки из таблицы B.
 
Условия присоединения:
Substring(Table_A.Field_1) = CONVERT(Table_B.Field_1, varchar())
B.Field_1 имеет тип INT
А.Field_1 имеет тип varchar

Left Join с такими условиями не срабатывает.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 03-12-2008 17:26 » 

katerina_sql, а покажи, как делала ? Улыбаюсь
Записан

katerina_sql
Гость
« Ответ #2 : 03-12-2008 18:04 » 

вот так:

Select Field_1 from Table_A
left join Table_B on CONVERT(varchar, Field_1) = Substring(Filed_1, 1, 5)

Замечу, что Field_1 в таблице B имеет тип int, Field_1 в таблице А имеет тип varchar
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #3 : 03-12-2008 18:35 » 

на что ругается? да, и не прохо бы СУБД указать Ага
Записан

Удачного всем кодинга! -=x[PooH]x=-
katerina_sql
Гость
« Ответ #4 : 03-12-2008 18:53 » 

СУБД SQL Server 2005,
он не ругается, колонка присоединяется, но значение колонки Table_B.Field_1 всегда NULL
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 03-12-2008 19:00 » 

Цитата: katerina_sql
Select Field_1 from Table_A
left join Table_B on CONVERT(varchar, Field_1) = Substring(Filed_1, 1, 5)

Замечу, что Field_1 в таблице B имеет тип int, Field_1 в таблице А имеет тип varchar
1) Filed_1 - это Field_1, опечатка?
2) Если опечатка, то этот запрос вообще работать не будет с ошибкой ambiguous column - приведи реальный запрос, который не работает.
3) Если не опечатка, то в самом ли деле в поле Filed_1 то же значение, что и в Field_1?
4) Есть ли записи в Table_B?
5) Каковы реальные значения поля в первой и второй таблицах? (Можно сюда выложить несколько примеров.)
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #6 : 03-12-2008 19:02 » 

еще не плохо бы увидеть результаты функций CONVERT(varchar, Field_1) и Substring(Filed_1, 1, 5)
Записан

Удачного всем кодинга! -=x[PooH]x=-
katerina_sql
Гость
« Ответ #7 : 03-12-2008 19:08 » 

SELECT Table_A.*, Table_B.userID from Table_A
           
left join Table_B on ('USER' + Str(userID) + 'HOME') = Table_A.UserName


Столбец Table_A.UserName имеет значения:
USER1HOME
USER2HOME
...

Table_B.UserID
1
2
...
Записан
katerina_sql
Гость
« Ответ #8 : 03-12-2008 19:11 » 

UserName не ключевое поле, но по-моему это неважно
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #9 : 03-12-2008 19:18 » 

а так что выводит?
Код:
select UserName, 'USER' + Str(userID) + 'HOME'
from Table_A, Table_B
where 'USER' + Str(userID) + 'HOME' = UserName;
« Последнее редактирование: 03-12-2008 19:21 от PooH » Записан

Удачного всем кодинга! -=x[PooH]x=-
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #10 : 03-12-2008 19:20 » 

в Table_A.UserName никаких пробелов не затисалось? может затримить?
Записан

Удачного всем кодинга! -=x[PooH]x=-
katerina_sql
Гость
« Ответ #11 : 03-12-2008 19:40 » new

Пробелов нет, Ваш запрос выдает пустую таблицу.
Странно, кто-то из нас с SQL сегодня тормозит
Записан
katerina_sql
Гость
« Ответ #12 : 03-12-2008 19:51 » 

Ух, кажется нашлась проблема. Str(int) вставляет пробелы. В них-то и загвоздка была.
Кто бы мог подумать...
Спасибо всем за помощь Улыбаюсь
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #13 : 03-12-2008 19:55 » 

Цитата
Ваш запрос выдает пустую таблицу.
А если пробелы удалить? должна быть, по-идее, не пустая... хотя сложно писать запросы на непривычном диалекте Ага (я в основном с оракловым сталкиваюсь)
Записан

Удачного всем кодинга! -=x[PooH]x=-
katerina_sql
Гость
« Ответ #14 : 03-12-2008 20:17 » 

Если трим сделать, то все работает Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines