Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Аленка
Зарегистрирован: 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
Добрый день!
Что имеется ввиду?
Вместо * в подзапросе прописать явно те столбцы, которые мне нужны? |
Да, я это и имел ввиду.
Ну так вы попробуйте и нам скажите |
|
Вернуться к началу |
|
|
Аленка
Зарегистрирован: 08.04.2011 Сообщения: 64 Откуда: Оттуда
|
Добавлено: Пт Апр 27, 2012 11:44 Заголовок сообщения: |
|
|
Переписала... Ничего не изменилось в плане ambiguous// |
|
Вернуться к началу |
|
|
Аленка
Зарегистрирован: 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
Попробовала,шаманство не прошло.
Видимо так обрабатываются подзапросы..
Тестируем 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,
вобщем до этого и сама дошла, как видно из предыдущих постов. Но спасибо за разъяснение логики работы приложения.. |
|
Вернуться к началу |
|
|
|