Autor | Zpráva | ||
---|---|---|---|
anonymni Profil * |
#1 · Zasláno: 10. 10. 2012, 10:31:27
Dobrý deň,
stojím pred problémom ako zapísať výsledok selectu: SELECT SUM(download) as download, SUM(upload) as upload FROM zariadenie WHERE linka = '1' Čiže: select mi spraví sčítanie hodnôt a potrebujem výsledok zapísať do inej tabuľky. Ďakujem za pomoc |
||
Kajman Profil |
#2 · Zasláno: 10. 10. 2012, 10:59:28
|
||
Taps Profil |
|||
anonymni Profil * |
#4 · Zasláno: 10. 10. 2012, 13:24:52
Ďakujem, len mám jeden problém teraz s tým:
INSERT INTO linka ( download, upload, time ) SELECT SUM( n.in_bytes_rate ), SUM( n.out_bytes_rate ), now(); FROM system.device as n, monitoring.linka as l WHERE n.linka = '1' Dátum mi zapíše, avšak hodnoty mi nechce sčítať. Niekde je chybička? |
||
Tori Profil |
#5 · Zasláno: 10. 10. 2012, 13:33:15
Nechybí v selectu ještě
GROUP BY linka ?
|
||
Kajman Profil |
#6 · Zasláno: 10. 10. 2012, 13:43:39
anonymni:
Za now() nedávejte středník, tím dotaz ukončíte. Určitě chcete ty dvě tabulky propojit cross joinem bez vazební podmínky? |
||
anonymni Profil * |
#7 · Zasláno: 10. 10. 2012, 13:48:19
Kajman:
Za now() sa mi tam priplietol stredník. Chcem len aby zrátalo hodnoty device.linka = 1 a to download a upload a zapísalo do tabuľky inej. Tori: Skúsil som pridať ale nefunguje to |
||
Kajman Profil |
#8 · Zasláno: 10. 10. 2012, 13:58:43
anonymni:
Když tedy dáte jen select, bez insertu před ním, tak se vypíší správná čísla? |
||
anonymni Profil * |
#9 · Zasláno: 10. 10. 2012, 14:17:42
Kajman:
Keď dám SELECT SUM( in_bytes_rate ), SUM( out_bytes_rate ) FROM system.net_device WHERE linka = 1 |
||
Kajman Profil |
#10 · Zasláno: 10. 10. 2012, 14:29:04
A s tímto dotazem (bez cross joinu s monitoring.linka) ten insert jde?
|
||
anonymni Profil * |
#11 · Zasláno: 10. 10. 2012, 14:37:03
Keď dám:
INSERT INTO monitoring.linka ( download, upload, time ) |
||
Kajman Profil |
#12 · Zasláno: 10. 10. 2012, 15:04:27
Ale jen insert bez hodnot přeci nepůjde. A time je klíčové slovo - je jistější takový sloupec obalit zpětnými apostrofy.
INSERT INTO monitoring.linka (`download`, `upload`, `time`) SELECT Sum(in_bytes_rate), Sum(out_bytes_rate), Now() FROM system.net_device WHERE linka = 1 |
||
anonymni Profil * |
#13 · Zasláno: 10. 10. 2012, 15:53:12
Kajman:
Zrátalo hodnoty nejaké, ale nie ktoré malo. Do tabuľky download aj upload zapísalo rovnaké hodnoty, pritom nie sú rovnaké. |
||
Kajman Profil |
#14 · Zasláno: 10. 10. 2012, 15:58:44
Jaký datový typ máte u sloupců dwonload a upload? Není možné, že se ten součet nevešel do jejich rozsahu?
|
||
Časová prodleva: 20 dní
|
|||
anonymni Profil * |
#15 · Zasláno: 30. 10. 2012, 19:06:56 · Upravil/a: Moderátor (editace znemožněna) 31. 10. 2012, 21:57:29
Už som to vyriešil. Mal som zlú štruktúru tabuľky ako napísal Kajman.
Mám teraz ďalší problém. Rieším podobný script, //Aktualny datum, tvar 20121031 $datum = Date("Ymd", Time()); // Priradenie cisla karty k technikovmu ID $id_technika = array( '00000002' => '79', '00000003' => '102', '00000004' => '74', '00000005' => '101', '00000006' => '84', ); // Script na spravenie selectu z databazy do mysql $sql_select = mysql_query("INSERT INTO i.servisni_zasahy ( i.zavada_userid, UNIX_TIMESTAMP( i.zavada_datum), UNIX_TIMESTAMP( i.zavada_time), i.zavada_technik, i.zavada_txt, UNIX_TIMESTAMP(i.reseni_datum), i.priority, i.complete, i.UNIX_TIMESTAMP(complete_time), i.complete_userid, i.nahlaseno, i.servisni_zasahy_typ, i.doba, i.ulozil, i.visible ) SELECT d.id_doch, d.prichod, d.odchod, d.id_doch, d.prichod d.odchod, d.odchod, d.prichod, 3, 1, d.prichod, $id_technika[1], 0, 142, |nespecifikovano|, $id_technika[1], 1 FROM ispadmin.servisni_zasahy as i, dochadzka.vypocitane as d WHERE d.datum = '$datum' and d.datum like '20%' "); V selecte je premenna $id_technika[1] (zatiaľ to neviem domyslieť, tak som tam dal túto hodnotu). Select by mal (podľa všetkého) spraviť select technika - jeho id 000002, a ja potrebujem aby namiesto id 00002 dal do výsledku hodnotu 79. Ako to docieliť? Viem, že tým array to nepôjde ale akosi ma nič nemôže napadnúť teraz. Ďakujem |
||
Kajman Profil |
Může použít case, elt a field, poddotaz nebo přímo si vytvořit v databázi tu převodní tabulku.
|
||
Časová prodleva: 11 let
|
0