powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Right Join можно ли обработать посредством DAO?
25 сообщений из 26, страница 1 из 2
Right Join можно ли обработать посредством DAO?
    #39863440
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется запрос с участием 2-х таблиц (метод Right Join).
Нужно обновить записи где в левой таблице значения полей NULL(а в правой таблице значения 'этих же' полей не равны NULL).Через DAO.Recordset это можно реализовать?
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863449
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
draftyИмеется запрос с участием 2-х таблиц (метод Right Join).
Нужно обновить записи где в левой таблице значения полей NULL(а в правой таблице значения 'этих же' полей не равны NULL).Через DAO.Recordset это можно реализовать?
Что именно реализовать?
"... обновить записи где в левой таблице значения полей NUL" ?
Но этих записей просто нет, как можно обновить несуществующее?
Или речь про добавление? Тогда можно.
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863467
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__MichelledraftyИмеется запрос с участием 2-х таблиц (метод Right Join).
Нужно обновить записи где в левой таблице значения полей NULL(а в правой таблице значения 'этих же' полей не равны NULL).Через DAO.Recordset это можно реализовать?
Что именно реализовать?
"... обновить записи где в левой таблице значения полей NUL" ?
Но этих записей просто нет, как можно обновить несуществующее?
Или речь про добавление? Тогда можно.
Да, действительно,там где в левой таблице значения null -этих записей просто нетути...(я как-то не подумал)
Тогда другой вопрос,как мне обратиться к значению поля1 правой таблицы посредством Dao.recordset (запрос тот же) ,пишу:
Set rst1=current db.openrecordset("Right Join")
rst1.movefirst
var1=rst1! KodSistemi
Ругается компилятор на 'rst1! KodSistemi'...знаю что неправильно написал...короче мне надо получить значение поля1 правой таблицы посредством DAO там,где в правой значение этого же поя равно null
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863468
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drafty__Michelleпропущено...

Что именно реализовать?
"... обновить записи где в левой таблице значения полей NUL" ?
Но этих записей просто нет, как можно обновить несуществующее?
Или речь про добавление? Тогда можно.
Да, действительно,там где в левой таблице значения null -этих записей просто нетути...(я как-то не подумал)
Тогда другой вопрос,как мне обратиться к значению поля1 правой таблицы посредством Dao.recordset (запрос тот же) ,пишу:
Set rst1=current db.openrecordset("Right Join")
rst1.movefirst
var1=rst1! KodSistemi
Ругается компилятор на 'rst1! KodSistemi'...знаю что неправильно написал...короче мне надо получить значение поля1 правой таблицы посредством DAO там,где в правой значение этого же поя равно null
...т.е. там,где значение левого поля равно null
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863544
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
draftyИмеется запрос с участием 2-х таблиц (метод Right Join).
Нужно обновить записи где в левой таблице значения полей NULL(а в правой таблице значения 'этих же' полей не равны NULL).Через DAO.Recordset это можно реализовать?

При связке RIGHT JOIN можно обновить только поля относящиеся к подчиненной таблице . (в аксеcовском jet SQL)
При связке LEFT JOIN можно обновить поля как из главной ,так и из подчиненной таблице . ( в аксеcовском jet SQL)

Как руками обновить, так и в DAO,ADO.

В обеих случаях это хреновая затея, так как если в общем аксесовском "запросе" больше чем две таблицы, обновление может привести к неожиданным результатам. (К примеру создание новых значений для ключевых полей главной таблицы, которые вообще не имеют право на существование в структуре данных.)
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863563
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ЛаловdraftyИмеется запрос с участием 2-х таблиц (метод Right Join).
Нужно обновить записи где в левой таблице значения полей NULL(а в правой таблице значения 'этих же' полей не равны NULL).Через DAO.Recordset это можно реализовать?

При связке RIGHT JOIN можно обновить только поля относящиеся к подчиненной таблице . (в аксеcовском jet SQL)
При связке LEFT JOIN можно обновить поля как из главной ,так и из подчиненной таблице . ( в аксеcовском jet SQL)

Как руками обновить, так и в DAO,ADO.

В обеих случаях это хреновая затея, так как если в общем аксесовском "запросе" больше чем две таблицы, обновление может привести к неожиданным результатам. (К примеру создание новых значений для ключевых полей главной таблицы, которые вообще не имеют право на существование в структуре данных.)
По контексту видно-специалист! ☺️
Тогда вопрос вот какой-если я в DAO.Recordset объектом у меня может быть 1таблица или инструкция SQL(что может быть и запрос) и обращение к полю примерно такое
With rst
!Поле1
...
то как тогда мне обратиться к полям этого вышеоговоренного запроса Right Join ведь там 2 таблицы?🤔🤔🤔
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863573
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
draftyТогда вопрос вот какой-если я в DAO.Recordset объектом у меня может быть 1таблица или инструкция SQL(что может быть и запрос) и обращение к полю примерно такое
With rst
!Поле1
...
то как тогда мне обратиться к полям этого вышеоговоренного запроса Right Join ведь там 2 таблицы?🤔🤔🤔

В смысле как?) Как к одному объекту /сборке внутри этого запроса, который использует связь RIGHT JOIN.


К примеру у вас есть запрос с RIGHT JOIN, который находится в:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
........
Set rs=db.Open("SELECT товары.товар, характеристики.характеристика FROM товары RIGHT JOIN характеристики ON товары.код_товара = характеристики.код_товара")
rs.movelast
rs.movefirst
with rs
rs.Edit
        rs![характеристика] = "хорошо продается" 'такое должен обновить ,потому что обращаемся к таблице подчиненной ,а вот  rs![товар] хрен, потому что она в главной.
 rs.Update
end with
.............
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863576
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И надо понимать, что обновляем мы в данном примере одну запись. Первую в таблице. Мало ли...)

Если какую то конкретную запись нужно, то придется циклом по рекордсету побегать и найти нужную.
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863577
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS. И если у вас будет связь между таблицами в запросе по обычным- неиндексируемым/не ключевым, то такой запрос (точней объект - рекордсет) вообще не будет обновляемым, ни при RIGHT JOIN, ни при LEFT JOIN.
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863580
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS.2 На вопрос почему так происходит (не обновляется) вам уже ответила _michelle
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863604
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ЛаловdraftyТогда вопрос вот какой-если я в DAO.Recordset объектом у меня может быть 1таблица или инструкция SQL(что может быть и запрос) и обращение к полю примерно такое
With rst
!Поле1
...
то как тогда мне обратиться к полям этого вышеоговоренного запроса Right Join ведь там 2 таблицы?🤔🤔🤔

В смысле как?) Как к одному объекту /сборке внутри этого запроса, который использует связь RIGHT JOIN.


К примеру у вас есть запрос с RIGHT JOIN, который находится в:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
........
Set rs=db.Open("SELECT товары.товар, характеристики.характеристика FROM товары RIGHT JOIN характеристики ON товары.код_товара = характеристики.код_товара")
rs.movelast
rs.movefirst
with rs
rs.Edit
        rs![характеристика] = "хорошо продается" 'такое должен обновить ,потому что обращаемся к таблице подчиненной ,а вот  rs![товар] хрен, потому что она в главной.
 rs.Update
end with
.............


Т.е. та таблица которая "слева"(по логике диаграмм Эйлера-Венна) считается главной всегда ?
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863606
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ЛаловdraftyТогда вопрос вот какой-если я в DAO.Recordset объектом у меня может быть 1таблица или инструкция SQL(что может быть и запрос) и обращение к полю примерно такое
With rst
!Поле1
...
то как тогда мне обратиться к полям этого вышеоговоренного запроса Right Join ведь там 2 таблицы?🤔🤔🤔

В смысле как?) Как к одному объекту /сборке внутри этого запроса, который использует связь RIGHT JOIN.


К примеру у вас есть запрос с RIGHT JOIN, который находится в:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
........
Set rs=db.Open("SELECT товары.товар, характеристики.характеристика FROM товары RIGHT JOIN характеристики ON товары.код_товара = характеристики.код_товара")
rs.movelast
rs.movefirst
with rs
rs.Edit
        rs![характеристика] = "хорошо продается" 'такое должен обновить ,потому что обращаемся к таблице подчиненной ,а вот  rs![товар] хрен, потому что она в главной.
 rs.Update
end with
.............


А если у меня название полей во всех таблицах совпадают,тогда rs![Поле1] вызывает по идее в любом случае ошибку,потому что и в главной и в подчиненной таблице есть это поле и как тогда понять к какому полю происходит обращение???
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863614
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
draftyТ.е. та таблица которая "слева"(по логике диаграмм Эйлера-Венна) считается главной всегда ?

Охтыжь, а я то с немытыми руками в ваш топик)) В последний раз касался множеств лет этак 20 назад, курсе на втором.

Главная таблица по логике разработчиков майкрософт в аксессе та, в которой на один первичный ключ приходится множество внешних ключей в другой. И то правило применимо относительно именно этих двух таблиц.

Потому что может существовать третья таблица, которая связана со второй как подчиненная , но по отношению к первой выступать как главная.
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863616
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drafty,

Если у вас в главной и подчиненной таблице есть одинаковое поле , то как один из вариантов - можно для какого то из них в тексте запроса создать псевдоним:

SELECT..,[поле] AS НовоеИмяПоля ,[другое поле],...FROM...

и потом в рекордсете обратиться по псевдониму:

rs![НовоеИмяПоля]="значение"
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863621
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лаловdrafty,

Если у вас в главной и подчиненной таблице есть одинаковое поле , то как один из вариантов - можно для какого то из них в тексте запроса создать псевдоним:

SELECT..,[поле] AS НовоеИмяПоля ,[другое поле],...FROM...

и потом в рекордсете обратиться по псевдониму:

rs![НовоеИмяПоля]="значение"
Окэ,я конечно попробую последовать вашему совету,но что-то мне подсказывает,что не хватает ещё какого то нюанса.По результату отпишусь
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863622
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов... Главная таблица по логике разработчиков майкрософт в аксессе та,...

"По логике разработчиков майкрософт" (с) понятия "главная таблица" не существует.
Не?
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863624
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ЛаловdraftyТ.е. та таблица которая "слева"(по логике диаграмм Эйлера-Венна) считается главной всегда ?

Охтыжь, а я то с немытыми руками в ваш топик)) В последний раз касался множеств лет этак 20 назад, курсе на втором.

Главная таблица по логике разработчиков майкрософт в аксессе та, в которой на один первичный ключ приходится множество внешних ключей в другой. И то правило применимо относительно именно этих двух таблиц.

Потому что может существовать третья таблица, которая связана со второй как подчиненная , но по отношению к первой выступать как главная.
Я спросил про определение ГЛАВНАЯ применительно к запросу Right Join,а не вообще про принципы построения БД.Поэтому и спросил, что если в этом запросе поля равнозначны (т.е. оба в статусе PK) все-равно главной будет левая таблица?
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863625
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Predeclared,

Регламентного термина или объекта какого то отдельного не встречал в скрижалях MS ,не спорю) Подтаблица (или по другому "внедренная таблица") есть, и то в другом контексте, не по теме топика. Главную не видел))
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863626
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов... не встречал в скрижалях MS ...
ОК.
Я было подумал в новых версиях появилось вдруг.
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863628
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PredeclaredСергей Лалов... не встречал в скрижалях MS ...
ОК.
Я было подумал в новых версиях появилось вдруг.

в новых версиях появился новый тип данных для аксесса - bigint, у кого то наверху наверное появилась наконец возможность вести в аксессе учет поступления своей заработной платы)
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863629
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
draftyЯ спросил про определение ГЛАВНАЯ применительно к запросу Right Join,а не вообще про принципы построения БД.Поэтому и спросил, что если в этом запросе поля равнозначны (т.е. оба в статусе PK) все-равно главной будет левая таблица?

JOIN (INNER,OUT,LEFT,RIGHT) это не запрос, а оператор в запросе. Оператор соединения, как раз тех самых упомянутых вами множеств, которые как раз составляют данные, хранящиеся в таблице. С определенными правилами вывода значений. Вы упомянули что у вас два связь через два равнозначных primary key. Вышлите пожалуйста образец базы, достаточно образец с таблицами и связями,с которыми у вас возникают проблемы при обновлении рекордсета, скажите что хотите иметь на выходе , мы посмотрим ,что вы там натворили и поможем решить задачку, если она вообще решаема.
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863654
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Сергей Лалов]draftyЯ спросил про определение ГЛАВНАЯ применительно к запросу Right Join,а не вообще про принципы построения БД.Поэтому и спросил, что если в этом запросе поля равнозначны (т.е. оба в статусе PK) все-равно главной будет левая таблица?

JOIN (INNER,OUT,LEFT,RIGHT) это не запрос, а оператор в запросе. Оператор соединения, как раз тех самых упомянутых вами множеств, которые как раз составляют данные, хранящиеся в таблице. С определенными правилами вывода значений. Вы упомянули что у вас два связь через два равнозначных primary key. Вышлите пожалуйста образец базы, достаточно образец с таблицами и связями,с которыми у вас возникают проблемы при обновлении рекордсета, скажите что хотите иметь на выходе , мы посмотрим ,что вы там натворили и поможем решить задачку, если она вообще решаема.[/quot
Нет,об обновлении рекордсета речи уже нет,достаточно просто "прочитать" значения полей участвующих в запросе...
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863676
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
draftyСергей Лаловdrafty,

Если у вас в главной и подчиненной таблице есть одинаковое поле , то как один из вариантов - можно для какого то из них в тексте запроса создать псевдоним:

SELECT..,[поле] AS НовоеИмяПоля ,[другое поле],...FROM...

и потом в рекордсете обратиться по псевдониму:

rs![НовоеИмяПоля]="значение"
Окэ,я конечно попробую последовать вашему совету,но что-то мне подсказывает,что не хватает ещё какого то нюанса.По результату отпишусь
Да, только что протестировал.Использование псевдонима-хороший выход из положения...А самое главное-действительно, посредством DAO.Recordset можно получить значение поля запроса Right Join(я почему-то думал что DAO.Recordset не работает там,где таблиц более одной). Благодарю за советы! ✋✋✋
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39863775
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрел топик и ничего не понял.
-левой и правой таблицы станут после их объединения 1:М еще на этапе их создания
-как понимать выражение: "значения 'этих же' полей" (зачем в двух таблицах "эти же" поля?)
-какую,конкретно, задачу Вы решаете
-рекордсет работает если таблиц несколько
...
Рейтинг: 0 / 0
Right Join можно ли обработать посредством DAO?
    #39864076
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkuПосмотрел топик и ничего не понял.
-левой и правой таблицы станут после их объединения 1:М еще на этапе их создания
-как понимать выражение: "значения 'этих же' полей" (зачем в двух таблицах "эти же" поля?)
-какую,конкретно, задачу Вы решаете
-рекордсет работает если таблиц несколько
Вопрос был в том,что надо было сверить 2 одинаковые по структуре таблицы и выявить отсутствующие записи в одной из них на основании другой посредством Поэтому я и вписал фразу про 'значения этих же полей'(т.е. одинаковых по типу данных,длине символов и названию поля)
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Right Join можно ли обработать посредством DAO?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]