Zdarec,mám takový problém.V mysql vytvořenou tabulku napr.Tab1 a v ní sloupce
jmeno a pocet např:
jmeno pocet id
AAA 152 1
BBB 100 2
CCC 50 3
AAA 100 4
DDD 400 5
AAA 10 6
CCC 5 7
a potřeboval bych nějak sečíst hodnoty 'pocet' pokud maji stejné 'jmeno'
a ulozit je do jednoho radku pod stejnym jmenem a zbytek vymazat.
vysledek
jmeno pocet id
AAA 262 1
BBB 100 2
CCC 55 3
DDD 400 4
mohli by jste mi prosím poradit jak to udělat.Díky moc.
Sečtení hodnot v Mysql
- Hansz
- Nováček

-
- Registrován: 10. kvě 2006
- OndraSter
- Středně pokročilý

- Registrován: 22. úno 2006
- Bydliště: Praha / ČVUT FIT
- Kontaktovat uživatele:
Predpokladam ze k dispozici mas i PHP. Ja bych to udelal nejak takto:
nezkousel jsem, mozna se tam nekde vyskytuje chyba..
Kód: Vybrat vše
$result = mysql_query('SELECT * FROM tab1');
$vars = array();
while($line = mysql_fetch_array($result)) {
if(!$vars[$line['jmeno']]) $vars[$line['jmeno']] = $line['pocet'];
else $vars[$line['jmeno']] += $line['pocet'];
}
mysql_query('TRUNCATE TABLE tab1');
foreach ($vars as $name=>$number) {
mysql_query('INSERT INTO tab1 (jmeno, pocet) VALUES (\'' . $name . '\', ' . $number . ')');
}PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32
Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32
Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
- Hansz
- Nováček

-
- Registrován: 10. kvě 2006
- OndraSter
- Středně pokročilý

- Registrován: 22. úno 2006
- Bydliště: Praha / ČVUT FIT
- Kontaktovat uživatele:
tak do toho bash skriptu dej i
/usr/bin/php -f /root/soucet.php

/usr/bin/php -f /root/soucet.php
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32
Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32
Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
- Hansz
- Nováček

-
- Registrován: 10. kvě 2006
Tak nakonec jsem to dal dohromady(stacilo poobedvat)
#soucet tech co se vyskytuji vic jak 1 a ulozeni do souboru test_1.txt
select jmeno,sum(pocet) from tab1
group by jmeno having count(*) >=2
into outfile '/home/test_1.txt';
#zapis tech co se vyskytuji jen 1 a ulozeni do souboru test_2.txt
select jmeno,pocet from tab1
group by jmeno having count(*) =1
into outfile '/home/test_2.txt';
+vymazani tab1 a znovu nacteni ze souboru
Mozna krkolomny reseni s tim ukladanim ale s sql si hraji 3 dny tak me potesilo ze jsem na to prisel i sam.Pokud by nekomu vadila rychlost tak to mi nevadi jedna se o malou databazi.
Dik za rady.
#soucet tech co se vyskytuji vic jak 1 a ulozeni do souboru test_1.txt
select jmeno,sum(pocet) from tab1
group by jmeno having count(*) >=2
into outfile '/home/test_1.txt';
#zapis tech co se vyskytuji jen 1 a ulozeni do souboru test_2.txt
select jmeno,pocet from tab1
group by jmeno having count(*) =1
into outfile '/home/test_2.txt';
+vymazani tab1 a znovu nacteni ze souboru
Mozna krkolomny reseni s tim ukladanim ale s sql si hraji 3 dny tak me potesilo ze jsem na to prisel i sam.Pokud by nekomu vadila rychlost tak to mi nevadi jedna se o malou databazi.
Dik za rady.
- Kriss
- Začátečník

- Registrován: 12. úno 2007
- Kontaktovat uživatele:
I prez zdanlivou jedoduchost problemu sem nakonec nad timhle problemem stravil trochu vic casu nez sem chtel, ale vymislel sem ti reseni na 3 radky mysql
Prvni radek ti vytvori docasnou tabulku kde budou uz vypocitany soucty, druhej radek ti vyprazdni puvodni tabulku a treti radek data z docasny tabulky prekopiruje do puvodni, ted uz prazdny tabulky.
Docasna tabulka se po ukonceni relace sama smaze, takze ji nemusis mazat prikazem.
Edit: btw tohle reseni zabere serveru priblizne setinu doby kterou zabere to reseni s tim ukladanim do souboru
Kód: Vybrat vše
CREATE TEMPORARY TABLE docasna_tabulka SELECT jmeno, sum(pocet) FROM tab1 GROUP BY jmeno;
TRUNCATE TABLE tab1;
INSERT INTO tab1 SELECT *, NULL FROM docasna_tabulka;Docasna tabulka se po ukonceni relace sama smaze, takze ji nemusis mazat prikazem.
Edit: btw tohle reseni zabere serveru priblizne setinu doby kterou zabere to reseni s tim ukladanim do souboru
CPU: Intel Core2Duo E6300 1,86GHz@3,2GHz MB: Asus P5B Deluxe/WiFi-AP RAM: Geil 2048MB DDR II 800MHz Kit @914MHz GPU: ATI Radeon X1950PRO Ultimate
http://share.csko.net/files/KT-PC/
Posledni vytvor: http://hledej-aukce.cz
http://share.csko.net/files/KT-PC/
Posledni vytvor: http://hledej-aukce.cz