ďťż
 
[mysql] obliczanie sumy ďťż
 
[mysql] obliczanie sumy
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

[mysql] obliczanie sumy



arcuser - 13-11-2006 00:45
[mysql] obliczanie sumy
  Witam,

załóżmy, że mam taką prostą tabelę:
CREATE TABLE `test` (
`id` int(4) NOT NULL,
`pole1` tinyint(4) default NULL,
`pole2` tinyint(4) default NULL,
`pole3` tinyint(4) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

z takimi przykładowymi danymi:
INSERT INTO `test` VALUES (1, 1, 1, 1);
INSERT INTO `test` VALUES (2, 2, 2, 2);
INSERT INTO `test` VALUES (3, 3, 3, 3);
INSERT INTO `test` VALUES (4, 4, 4, 4);
INSERT INTO `test` VALUES (9999, NULL, NULL, NULL);

i teraz pytanie: jakim zapytaniem SQL spowodować, żeby z rekordzie o id=9999
pojawiły się sumy poszczególnych kolumn? Zapytanie typu:
REPLACE INTO test VALUES ('9999',SUM(table.pole1),SUM(table.pole2),SUM(tabl e.pole3))
daje błąd #1111

Działam na MySQL 5.0.22 i sprawdzam z konsoli i phpMyAdmin 2.8.2

Pozdrawiam
--
arcuser

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





arcuser - 13-11-2006 00:45

  Errata:

> REPLACE INTO test VALUES
('9999',SUM(table.pole1),SUM(table.pole2),SUM(tabl e.pole3))

Oczywiście sprawdzam takim zapytaniem:
REPLACE INTO test VALUES ('9999',SUM(test.pole1),SUM(test.pole2),SUM(test.p ole3))

Tak czy inaczej nie wiem jak zapisać sumy do rekordu w tej samej tabeli.
Jeśli ktoś zna rozwiązanie to prosze o pomoc.

Pozdrawiam
--
arcuser

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




bart - 13-11-2006 00:45

  nie uzywalem nigdy replace wiec nie znam skladni, ale chyba pierwsza
kolumna w tabeli jest typu int a nie zaden typ znakowy.
wiec czemu piszesz '9999' zamiast samego 9999?

bartek.

> Oczywiście sprawdzam takim zapytaniem:
> REPLACE INTO test VALUES ('9999',SUM(test.pole1),SUM(test.pole2),SUM(test.. pole3))
>
> Tak czy inaczej nie wiem jak zapisać sumy do rekordu w tej samej tabeli.
> Jeśli ktoś zna rozwiązanie to prosze o pomoc.
>
> Pozdrawiam
> --
> arcuser
>
>
> --
> Wysłano z serwisu OnetNiusy: http://niusy.onet.pl




arcuser - 13-11-2006 00:45

  Witam,

> nie uzywalem nigdy replace wiec nie znam skladni, ale chyba pierwsza
> kolumna w tabeli jest typu int a nie zaden typ znakowy.
> wiec czemu piszesz '9999' zamiast samego 9999?

To nie ma znaczenia, zapytanie:
REPLACE INTO test VALUES (9999,SUM(test.pole1),SUM(test.pole2),SUM(test.pol e3))

daje dokładnie ten sam efekt:
#1111 - Invalid use of group function

Pozdrawiam
--
arcuser

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





bart - 13-11-2006 00:45

 
> To nie ma znaczenia, zapytanie:
> REPLACE INTO test VALUES (9999,SUM(test.pole1),SUM(test.pole2),SUM(test.pol e3))
>
> daje dokładnie ten sam efekt:
> #1111 - Invalid use of group function

no bo SUM potrzebuje jeszcze czegos ....
moze sproboj tak, choc nie wiem czy bedzie dzialac.:

replace into test select 9999,
SUM(test.pole1),SUM(test.pole2),SUM(test.pole3) from test

a gdyby pokazywal zla sume (bo byc moze bedzie doliczal do sumy takze
wartosci z wiersza 9999) to dodaj na koncu warunek:

replace into test select 9999,
SUM(test.pole1),SUM(test.pole2),SUM(test.pole3) from test
where id<>9999;

bartek.




arcuser - 13-11-2006 00:45

  Witam,

bart napisał:
> a gdyby pokazywal zla sume (bo byc moze bedzie doliczal do sumy takze
> wartosci z wiersza 9999) to dodaj na koncu warunek:
> replace into test select 9999,
> SUM(test.pole1),SUM(test.pole2),SUM(test.pole3) from test
> where id<>9999;

Tak, działa doskonale, wielkie dzięki.

Pozdrawiam
--
arcuser

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?= [mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?= [MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?= [mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?= [MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?= [MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?= Gdzie MySQL 4.1, a gdzie 5.0? [MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?= [MS SQL] "set names" (mySQL) w MS SQL [mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
  • 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