ďťż
 
MSSQL problem z UPDATE ďťż
 
MSSQL problem z UPDATE
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

MSSQL problem z UPDATE



S. - 17-06-2007 00:15
MSSQL problem z UPDATE
  Witam, mam taka sobie tabelke, ktora bedzie zawierala informacje wyliczane
podczas wstawiania (tabelka tylko do celow raportowych) z polami
ID_PRODUKTU
KWOTA1_1
KWOTA1_2
ZNACZNIK1
KWOTA2_1
KWOTA2_2
ZNACZNIK2

w pierwszym kroku wypelniam cala tabelke odpowiednimi produktami (znaczy
ID_PRODUKTUma jakas wartosc), a w kolejnych krokach chcialabym odpowiednio
aktualizowac dane - najpierw dla pol z oznaczeniem 1
(KWOTA1_1,KWOTA1_2,ZNACZNIK1), potem dla 2 (KWOTA2_1,KWOTA2_2,ZNACZNIK2)
I teraz pytanie: jak skonstruowac zapytanie aktualizujace, ktore wstawi dla
odpowiedniej ID_PRODUKTU odpowiednie sumy z tabeli zrodlowej
TABELKA_ZRODLOWA TZ

Zaczynam tak:

UPDATE TABELKA
SET KWOTA1_1 = SUM( WARTOSCI1),
KWOTA1_2 = SUM( WARTOSCI2),
ZNACZNIK1 = @WARTOSC --WCZESNIEJ ZNANA WARTOSC
FROM TABELKA_ZRODLOWA TZ
WHERE TZ.ZNACZNIK_ZRODLOWY = @WARTOSC
+ gdzies musze jeszcze wstawic warunek o tym, ze maja byc aktualizowane
odpowiednie rekordy, dla ktorych id_produktu w TABELKA i TABELKA_ZRODLOWA sa
rowne

Czy ktos moze mnie nakierowac??

S.





S. - 17-06-2007 00:15

  Genralizujac: jaki napisac zapytanie aktualizujace, ktore aktualizuje
wybrane pola pobierajac jakies sumy czy county po innych tabelach dla
wybranych wierszy. Mam nadzieje, ze nie tlumacze tego w sposob zbyt
skomplikowany

S.




mchlop - 17-06-2007 00:15

  S. pisze:
> Witam, mam taka sobie tabelke, ktora bedzie zawierala informacje wyliczane
> podczas wstawiania (tabelka tylko do celow raportowych) z polami
> ID_PRODUKTU
> KWOTA1_1
> KWOTA1_2
> ZNACZNIK1
> KWOTA2_1
> KWOTA2_2
> ZNACZNIK2
>
> w pierwszym kroku wypelniam cala tabelke odpowiednimi produktami (znaczy
> ID_PRODUKTUma jakas wartosc), a w kolejnych krokach chcialabym odpowiednio
> aktualizowac dane - najpierw dla pol z oznaczeniem 1
> (KWOTA1_1,KWOTA1_2,ZNACZNIK1), potem dla 2 (KWOTA2_1,KWOTA2_2,ZNACZNIK2)
> I teraz pytanie: jak skonstruowac zapytanie aktualizujace, ktore wstawi dla
> odpowiedniej ID_PRODUKTU odpowiednie sumy z tabeli zrodlowej
> TABELKA_ZRODLOWA TZ
>
> Zaczynam tak:
>
> UPDATE TABELKA
> SET KWOTA1_1 = SUM( WARTOSCI1),
> KWOTA1_2 = SUM( WARTOSCI2),
> ZNACZNIK1 = @WARTOSC --WCZESNIEJ ZNANA WARTOSC
> FROM TABELKA_ZRODLOWA TZ
> WHERE TZ.ZNACZNIK_ZRODLOWY = @WARTOSC
> + gdzies musze jeszcze wstawic warunek o tym, ze maja byc aktualizowane
> odpowiednie rekordy, dla ktorych id_produktu w TABELKA i TABELKA_ZRODLOWA sa
> rowne
>
> Czy ktos moze mnie nakierowac??
>
> S.
>
>
>
Witam
z tego co zrozumialem powinno zadzialac takie zapytanie:
UPDATE TABELKA
SET KWOTA1_1 = SUM( WARTOSCI1),
KWOTA1_2 = SUM( WARTOSCI2),
ZNACZNIK1 = @WARTOSC --WCZESNIEJ ZNANA WARTOSC
FROM TABELKA t
inner join TABELKA_ZRODLOWA TZ on t.ID_PRODUKTU=TZ.ID_PRODUKTU
WHERE TZ.ZNACZNIK_ZRODLOWY = @WARTOSC

pozdrawiam




S. - 17-06-2007 00:15

  > Witam
> z tego co zrozumialem powinno zadzialac takie zapytanie:
> UPDATE TABELKA
> *SET KWOTA1_1 = SUM( WARTOSCI1),
> * * * *KWOTA1_2 = SUM( WARTOSCI2),
> * * * *ZNACZNIK1 = @WARTOSC --WCZESNIEJ ZNANA WARTOSC
> *FROM TABELKA t
> * *inner join *TABELKA_ZRODLOWA TZ on t.ID_PRODUKTU=TZ.ID_PRODUKTU
> *WHERE TZ.ZNACZNIK_ZRODLOWY = @WARTOSC
>

No wlasnie tez mi sie tak wydawalo, ale komunikat bledu jest nastepujacy
"An aggregate may not appear in the set list of an UPDATE statement."

--
Wys?ano z serwisu OnetNiusy: http://niusy.onet.pl





=?ISO-8859-2?Q?Artur_Muszy=F1ski?= - 17-06-2007 00:15

  S. pisze:
> Genralizujac: jaki napisac zapytanie aktualizujace, ktore aktualizuje
> wybrane pola pobierajac jakies sumy czy county po innych tabelach dla
> wybranych wierszy. Mam nadzieje, ze nie tlumacze tego w sposob zbyt
> skomplikowany

Co? takiego?

use pubs;
create table test (id int primary key,n int);
insert into test (id) values (8042);
update test set n=x
from
(
select stor_id,sum(qty) as x from sales group by stor_id
) as t where stor_id=id

artur




Marcin A. Guzowski - 17-06-2007 00:16

  S. wrote:
>> Witam
>> z tego co zrozumialem powinno zadzialac takie zapytanie:
>> UPDATE TABELKA
>> SET KWOTA1_1 = SUM( WARTOSCI1),
>> KWOTA1_2 = SUM( WARTOSCI2),
>> ZNACZNIK1 = @WARTOSC --WCZESNIEJ ZNANA WARTOSC
>> FROM TABELKA t
>> inner join TABELKA_ZRODLOWA TZ on t.ID_PRODUKTU=TZ.ID_PRODUKTU
>> WHERE TZ.ZNACZNIK_ZRODLOWY = @WARTOSC
>>
>
> No wlasnie tez mi sie tak wydawalo, ale komunikat bledu jest nastepujacy
> "An aggregate may not appear in the set list of an UPDATE statement."

Agregacje wykonuj w podzapytaniu, a UPDATE rób na zasadzie:

UPDATE tab1 SET suma = tab2.sum
FROM
tabela tab1
INNER JOIN
(
SELECT id, SUM(wartosc) AS sum
FROM tabela
GROUP BY wartosc
) tab2
ON (tab1.id = tab2.id)

--
Pozdrawiam,
Marcin Guzowski
http://guzowski.info




Marcin A. Guzowski - 17-06-2007 00:16

  Marcin A. Guzowski wrote:

> UPDATE tab1 SET suma = tab2.sum
> FROM
> tabela tab1
> INNER JOIN
> (
> SELECT id, SUM(wartosc) AS sum
> FROM tabela
> GROUP BY wartosc

Oczywi?cie powinno by?:

GROUP BY id

Lo siento.

> ) tab2
> ON (tab1.id = tab2.id)

--
Pozdrawiam,
Marcin Guzowski
http://guzowski.info
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?= mysql i mysql-front, problem String line; if (line=="cos"){...}....problem Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?= [postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?= [oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?= Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ] [PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ? [MySQL] Problem z zapisem danych w bazie danych Problem z mysql - can't connect to MySQL/nietypowo...
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • fantazia.htw.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com