-Ïîèñê ïî äíåâíèêó

Ïîèñê ñîîáùåíèé â rss_sql_ru_access_programming

 -Ïîäïèñêà ïî e-mail

 

 -Ïîñòîÿííûå ÷èòàòåëè

 -Ñòàòèñòèêà

Ñòàòèñòèêà LiveInternet.ru: ïîêàçàíî êîëè÷åñòâî õèòîâ è ïîñåòèòåëåé
Ñîçäàí: 16.03.2006
Çàïèñåé:
Êîììåíòàðèåâ:
Íàïèñàíî: 4


ïðèâåñòè ïîâåäåíèå UPDATE íà SQL Server ê ïîâåäåíèþ êàê ó Access

×åòâåðã, 01 Íîÿáðÿ 2018 ã. 14:03 + â öèòàòíèê
È ñíîâà, çäðàâñòâóéòå.
Ïðè ïåðåâîäå ñèñòåìû ñ mdb+mdb íà mdb+SQL âîçíèêëà î÷åðåäíàÿ ïðîáëåìà, âûçâàííàÿ ðàçëè÷íûì ïîâåäåíèåì Access è SQL server. Çàêëþ÷àåòñÿ îíà â ñëåäóþùåì: ïðè îáíîâëåíèè ïîëÿ òàáëèöû äàííûìè èç ïðèñîåäèí¸ííîé òàáëèöû, â ñëó÷àå, êîãäà íà êàæäóþ ñòðîêó èñõîäíîé òàáëèöû ïðèõîäèòñÿ íåñêîëüêî ñòðîê ïðèñîåäèí¸ííîé, ðåçóëüòàò äëÿ Access ïîëó÷àåòñÿ êàê ñóììàðíîå/ïîñëåäîâàòåëüíîå îáíîâëåíèå êàæäîé èç ñîîòíåññ¸íûõ ñòðîê. À ðåçóëüòàò SQL Server (êàê è íàïèñàíî â åãî äîêóìåíòàöèè) íåäåòåðìèíèðîâàííîå îáíîâëåíèå êàêîé íèáóäü èç ñîîòíåñ¸ííûõ ñòðîê.

 Access:
CurrentDb.Execute "CREATE TABLE A (id int, valA real);"
CurrentDb.Execute "CREATE TABLE B (id int, valB real);" 
CurrentDb.Execute "insert into A(id, valA) VALUES (1, 1);"
CurrentDb.Execute "insert into A(id, valA) VALUES (1, 2);"
CurrentDb.Execute "insert into A(id, valA) VALUES (1, 3);"
CurrentDb.Execute "insert into A(id, valA) VALUES (2, 1);"
CurrentDb.Execute "insert into A(id, valA) VALUES (2, 2);"
CurrentDb.Execute "insert into A(id, valA) VALUES (3, 0);"
CurrentDb.Execute "insert into B(id, valB) VALUES (1, 0);"
CurrentDb.Execute "insert into B(id, valB) VALUES (2, 0);"
CurrentDb.Execute "insert into B(id, valB) VALUES (3, 0);"
CurrentDb.Execute "UPDATE A INNER JOIN B ON A.id = B.id SET B.valB = B.valB + A.valA;"
docmd.OpenTable "B"

Ïîëó÷àåòñÿ:
id valB
1 6
2 3
3 0


Íà SQL server:
CREATE TABLE A (id int, valA real);
insert into A(id, valA) VALUES (1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (3, 0);

CREATE TABLE B (id int, valB real);
insert into B(id, valB) VALUES (1, 0), (2, 0), (3, 0);

UPDATE B SET B.valB = B.valB + A.valA FROM A INNER JOIN B ON A.id = B.id ;

SELECT * FROM B;

Ïîëó÷àåòñÿ:
id valB
1 1
2 1
3 0


Èñïðàâèòü ïðîáëåìó äëÿ îäíîãî ïðîñòîãî çàïðîñà ìîæíî ãðóïïèðîâêîé:
UPDATE B SET B.valB = B.valB + AA.valA FROM (SELECT SUM(valA) as valA, id FROM A GROUP BY id) AS AA INNER JOIN B ON AA.id = B.id ;

Íî, òàêèõ çàïðîñîâ ìíîãî è îíè, â îñíîâíîì, íå ïðîñòûå. Ïèñàòü ïðîãðàììó ïî èñïðàâëåíèþ òåêñòà çàïðîñîâ íå ïðîñòî.
Íî åñòü ëè äðóãèå âàðèàíòû?

http://www.sql.ru/forum/1304747/privesti-povedenie-update-na-sql-server-k-povedeniu-kak-u-access


 

Äîáàâèòü êîììåíòàðèé:
Òåêñò êîììåíòàðèÿ: ñìàéëèêè

Ïðîâåðêà îðôîãðàôèè: (íàéòè îøèáêè)

Ïðèêðåïèòü êàðòèíêó:

 Ïåðåâîäèòü URL â ññûëêó
 Ïîäïèñàòüñÿ íà êîììåíòàðèè
 Ïîäïèñàòü êàðòèíêó