Rozdíl dvou řádků ve stejné tabulce - výsledek do jiné – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Rozdíl dvou řádků ve stejné tabulce - výsledek do jiné – MySQL – Fórum – Programujte.comRozdíl dvou řádků ve stejné tabulce - výsledek do jiné – MySQL – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Roman
~ Anonymní uživatel
113 příspěvků
4. 5. 2016   #1
-
0
-

Ahojte,

potřeboval bych prosím od posledního přidaného řádku v tabulce s číselnymi hodnotami odečíst předposlední řádek a výsledek uložit do jiné tabulky.

Potřeboval bych vybrat konkrétní sloupce (skoro tedy všechny krom id a datumu)

Lze to učinit mysql dotazem? Nebo je třeba to zpracovat skriptem?

děkuji

Nahlásit jako SPAM
IP: 188.116.91.–
Reklama
Reklama
peter
~ Anonymní uživatel
2551 příspěvků
4. 5. 2016   #2
-
0
-

Ano.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:2d2d:c8...–
Roman
~ Anonymní uživatel
113 příspěvků
4. 5. 2016   #3
-
0
-

#2 peter
Ano co?

Nahlásit jako SPAM
IP: 188.116.91.–
Kit+11
Guru
4. 5. 2016   #4
-
0
-

#3 Roman
Ano, je to možné učinit SQL dotazem.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Roman
~ Anonymní uživatel
113 příspěvků
4. 5. 2016   #5
-
0
-

A nevíte prosím, jak ho poskládat? Stačí mi to nějak obecně.

Nahlásit jako SPAM
IP: 88.103.228.–
Kit+11
Guru
4. 5. 2016   #6
-
0
-

#5 Roman
Je trochu problém, jak zjistit, který řádek je poslední a který předposlední. Použít timestamp nebo ID? To je vlastně jedno. Poslední záznam získáš třeba tak, že použiješ klauzule "ORDER BY id DESC" a "LIMIT 1". U předposledního je to jen o trochu komplikovanější: "ORDER BY id DESC" a "LIMIT 2", ale z toho ještě uděláš "ORDER BY id" a "LIMIT 1". Tyto dva záznamy si dáš vedle sebe a odečteš.

Možná to vypadá složitě, ale je to jen na 3 řádky.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Roman
~ Anonymní uživatel
113 příspěvků
4. 5. 2016   #7
-
0
-

Děkuji. A vložení výsledku do jiné tabulky? Lze to provést všechno jedním dotazem? Počítám, že bude krapet složitější.

Nahlásit jako SPAM
IP: 88.103.228.–
Kit+11
Guru
4. 5. 2016   #8
-
0
-

#7 Roman
Není. Jen se před to všechno přilepí string "INSERT INTO tabulka_s_rozdily ".

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
NeregistrovanyHookyns
~ Anonymní uživatel
62 příspěvků
5. 5. 2016   #9
-
0
-

   

INSERT INTO vysledky (vysledek1, vysledek2) 
(
    SELECT (posledni.sloupec1 - predposledni.sloupec1), (posledni.sloupec2 - predposledni.sloupec2) FROM (
        SELECT * FROM tabulka ORDER BY id DESC LIMIT 1
    ) AS posledni
    JOIN (
        SELECT * FROM tabulka ORDER BY id DESC LIMIT 1,1
    ) AS predposledni
);

Testovací tabulky + 3 záznamy ve vstupní tabulce.

CREATE TABLE `vysledky` (
  `id` int(11) NOT NULL auto_increment,
  `vysledek1` decimal(10,0) NOT NULL,
  `vysledek2` decimal(10,0) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

CREATE TABLE `tabulka` (
  `id` int(11) NOT NULL auto_increment,
  `sloupec1` decimal(10,0) NOT NULL,
  `sloupec2` double NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

INSERT INTO `tabulka` VALUES ('1', '10', '7');
INSERT INTO `tabulka` VALUES ('2', '3', '2');
INSERT INTO `tabulka` VALUES ('3', '28', '27');
Nahlásit jako SPAM
IP: 77.95.192.–
peter
~ Anonymní uživatel
2551 příspěvků
5. 5. 2016   #10
-
0
-

Roman - Polozil jsi otazku, jestli je to mozne udelat. A jestli tim nebo tim zpusobem. Ano, je mozne to udelat tak i tak.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:74d3:c9...–
Roman
~ Anonymní uživatel
113 příspěvků
5. 5. 2016   #11
-
0
-

#9 NeregistrovanyHookyns
To je přesně ono. Děkuji mnohokrát!

Nahlásit jako SPAM
IP: 188.116.91.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 15 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý