Список форумов BOSSForum.RU - Форум. БОСС-Кадровик
Независимый форум, посвященный системе БОСС-Кадровик
и всему, что с ней связано
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Ambiguous column name, помогите понять

 
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> X-язык
Предыдущая тема :: Следующая тема  
Автор Сообщение
Аленка



Зарегистрирован: 08.04.2011
Сообщения: 64
Откуда: Оттуда

СообщениеДобавлено: Пт Апр 27, 2012 11:10    Заголовок сообщения: Ambiguous column name, помогите понять Ответить с цитатой

Существует список со следующим кодом

Код:
SELECT  t.id_sotrudn,
s.name_sotrudn,
sh.id_subdiv,
sb.name_subdiv,
sh.id_dolzn,
d.name_dolzn,
t.name_type_transfer,
t.date_beg_transfer [%x],
s.adress,
s.date_birth [%x]

FROM    ( SELECT TOP 1 WITH TIES
                    tr.*,
                    tt.name_type_transfer,               
                    tt.is_move
          FROM      client.dbo.transfer tr
                    JOIN client.dbo.type_transfer tt ON tr.id_type_transfer =  tt.id_type_transfer
          WHERE     _date[''] BETWEEN CAST(tr.date_beg_transfer AS DATE)
                       AND     ISNULL(CAST(tr.date_end_transfer AS DATE),
                                      '2999-01-01')
                    AND tt.is_move != 2
          ORDER BY  RANK() OVER ( PARTITION BY tr.id_sotrudn, tt.is_move ORDER BY tr.date_beg_transfer DESC )
        ) t
        JOIN client.dbo.shtat sh ON sh.id_shtat = t.id_shtat
        JOIN client.dbo.subdiv sb ON sh.id_subdiv = sb.id_subdiv
        JOIN client.dbo.dolzn_firm d ON d.id_dolzn = sh.id_dolzn
        JOIN client.dbo.sotrudn s ON t.id_sotrudn = s.id_sotrudn
WHERE   t.id_type_transfer != 3
   AND sh.id_subdiv=@$G2:1 AND ISNULL(s.name_sotrudn,'')!=''


При открытии ошибка не выдается.
Из списка вызывается диалог при закрытии которого (если произошли изменения) выдается Ambiguous column name id_sotrudn. Этот же диалог из другого списка при закрытии никаких ошибок не выдает. Помогите, пожалуйста, понять на что может ругаться..
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mike
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 07.04.2011
Сообщения: 255

СообщениеДобавлено: Пт Апр 27, 2012 11:24    Заголовок сообщения: Ответить с цитатой

А вы в подзапросе:
Код:
( SELECT TOP 1 WITH TIES
                    tr.*,
                    tt.name_type_transfer,               
                    tt.is_move
          FROM      client.dbo.transfer tr
                    JOIN client.dbo.type_transfer tt ON tr.id_type_transfer =  tt.id_type_transfer
          WHERE     _date[''] BETWEEN CAST(tr.date_beg_transfer AS DATE)
                       AND     ISNULL(CAST(tr.date_end_transfer AS DATE),
                                      '2999-01-01')
                    AND tt.is_move != 2
          ORDER BY  RANK() OVER ( PARTITION BY tr.id_sotrudn, tt.is_move ORDER BY tr.date_beg_transfer DESC )
        ) t


Не пробовали добавить в секцию SELECT столбец id_sotrudn ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Аленка



Зарегистрирован: 08.04.2011
Сообщения: 64
Откуда: Оттуда

СообщениеДобавлено: Пт Апр 27, 2012 11:30    Заголовок сообщения: Ответить с цитатой

Mike
Добрый день!
Что имеется ввиду?
Вместо * в подзапросе прописать явно те столбцы, которые мне нужны? А это что-то изменит в плане amiguous?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mike
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 07.04.2011
Сообщения: 255

СообщениеДобавлено: Пт Апр 27, 2012 11:36    Заголовок сообщения: Ответить с цитатой

Аленка писал(а):
Mike
Добрый день!
Что имеется ввиду?
Вместо * в подзапросе прописать явно те столбцы, которые мне нужны?


Да, я это и имел ввиду.

Ну так вы попробуйте и нам скажите Rolling Eyes
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Аленка



Зарегистрирован: 08.04.2011
Сообщения: 64
Откуда: Оттуда

СообщениеДобавлено: Пт Апр 27, 2012 11:44    Заголовок сообщения: Ответить с цитатой

Переписала... Ничего не изменилось в плане ambiguous// Sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Аленка



Зарегистрирован: 08.04.2011
Сообщения: 64
Откуда: Оттуда

СообщениеДобавлено: Пт Апр 27, 2012 11:49    Заголовок сообщения: Ответить с цитатой

Вобщем в подзапросе переименовала id_sotrudn в id_s.. Только после этого ambiguous ушел. Занятно.. Буду иметь ввиду.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Аленка



Зарегистрирован: 08.04.2011
Сообщения: 64
Откуда: Оттуда

СообщениеДобавлено: Пт Апр 27, 2012 11:49    Заголовок сообщения: Ответить с цитатой

Mike
Спасибо
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mike
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 07.04.2011
Сообщения: 255

СообщениеДобавлено: Пт Апр 27, 2012 11:57    Заголовок сообщения: Ответить с цитатой

Это конечно все шаманство с моей стороны, но все же.

Можно попробовать это строчку:
Код:
JOIN client.dbo.sotrudn s ON t.id_sotrudn = s.id_sotrudn


Переписать, как:
Код:
JOIN (SELECT id_sotrudn FROM client.dbo.sotrudn) s ON t.id_sotrudn = s.id_sotrudn
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Аленка



Зарегистрирован: 08.04.2011
Сообщения: 64
Откуда: Оттуда

СообщениеДобавлено: Пт Апр 27, 2012 12:11    Заголовок сообщения: Ответить с цитатой

Mike
Попробовала,шаманство не прошло. Sad
Видимо так обрабатываются подзапросы..
Тестируем RP Server - на Boss Disigner отрабатывало нормально, кто будет переходить имейте ввиду!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RVV
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 14.01.2010
Сообщения: 449

СообщениеДобавлено: Пт Апр 27, 2012 13:37    Заголовок сообщения: Ответить с цитатой

Стандартный диалог редактирования для позиционирования в списке после добавления записи автоматически подставляет ограничение с указанием ID вставленной записи.

Поэтому для корректной перерисовки списка
имя таблицы и ID поля должны совпадать и быть уникальными как в списке, так и в диалоге

в списке у такого поля еще и галку поднимают "определяет диалог"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Аленка



Зарегистрирован: 08.04.2011
Сообщения: 64
Откуда: Оттуда

СообщениеДобавлено: Пт Апр 27, 2012 16:50    Заголовок сообщения: Ответить с цитатой

Добрый день,RVV!

Правильно я понимаю, что если у меня список включает шапку + состав документа (1:М), то диалог редактирования вызывать нельзя?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RVV
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 14.01.2010
Сообщения: 449

СообщениеДобавлено: Пт Апр 27, 2012 17:14    Заголовок сообщения: Ответить с цитатой

Вызывать можно, просто запрос нужно писать с учетом специфики языка.

SELECT
tt.id_tt,
...................
FROM
tt,
..................
при этом поля id_tt не должно быть в других таблицах в запросе
тк диалог после себя подставит что-то типа id_tt = 12345
-------------------
В запросе диалога будет
SELECT
id_tt
FROM tt
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Аленка



Зарегистрирован: 08.04.2011
Сообщения: 64
Откуда: Оттуда

СообщениеДобавлено: Пт Апр 27, 2012 17:53    Заголовок сообщения: Ответить с цитатой

RVV,
тогда поясните для ясности
шапка документа (tab1) имеет ключевое поле id_doc + состав документа (tab2) имеет id_doc - ссылку на шапку, по условию шапка и состав относятся как 1:М. Список содержит шапку+состав. Как правильно написать select списка, чтоб не нарваться на ambiguous?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RVV
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 14.01.2010
Сообщения: 449

СообщениеДобавлено: Сб Апр 28, 2012 12:43    Заголовок сообщения: Ответить с цитатой

tab2 поместить в подзапрос и переименовать в нем поле id_doc в id_doc2
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Аленка



Зарегистрирован: 08.04.2011
Сообщения: 64
Откуда: Оттуда

СообщениеДобавлено: Ср Май 02, 2012 08:18    Заголовок сообщения: Ответить с цитатой

RVV,
вобщем до этого и сама дошла, как видно из предыдущих постов. Но спасибо за разъяснение логики работы приложения.. Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> X-язык Часовой пояс: GMT + 4
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Pоwerеd by рhpВB © 2001, 2005 рhpВB Grouр
Русская поддержка phрВB
Rambler's Top100 Рейтинг@Mail.ru Список форумов BOSSForum.RU