Diskuze: mysql jeden sloupec na dva

Ostatní jazyky SQL SQL a databáze mysql jeden sloupec na dva

Avatar
Posix
Člen
Avatar
Posix:

Ahoj, z jednoho dotazu dostanu několik řádků s jedním sloupcem obsahující čas.
např.:

+---------+
|   čas   |
+---------+
|  14:00  |
+---------+
|  15:00  |
+---------+
|  16:00  |
+---------+
|  17:00  |
+---------+
|  18:00  |
+---------+
|  19:00  |
+---------+

Jaký je sql příkaz, abych dostal něco takového

+---------+---------+
|  čas 1  |  čas 2  |
+---------+---------+
|  14:00  |  15:00  |
+---------+---------+
|  15:00  |  16:00  |
+---------+---------+
|  16:00  |  17:00  |
+---------+---------+
|  17:00  |  18:00  |
+---------+---------+
|  18:00  |  19:00  |
+---------+---------+

nebo to budu muset udělat až v php?

Odpovědět 25.3.2014 11:33
Proč to dělat jednoduše, když to jde složitě.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Posix
David Čápka:

Asi bych to dělal až v PHP, zbytečně budeš tahat ta samá data 2x.

Nahoru Odpovědět 25.3.2014 12:00
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Posix
Člen
Avatar
Odpovídá na David Čápka
Posix:

no ty samé data myslím nebudu tahat 2x. myslel jsem, že to bude složený dotaz, něco takové:

SELECT čas1, čas2 FROM (SELECT čas ...) ...

ale asi je to zbytečně složité pro mysql a nechám to na php

Nahoru Odpovědět 25.3.2014 12:10
Proč to dělat jednoduše, když to jde složitě.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Posix
David Čápka:

Z db bys do PHP přenášel každý čas 2x. Nad tím dotazem sem přemýšlel a nenapadlo mě žádné řešení.

Nahoru Odpovědět 25.3.2014 12:22
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Michal Haňáček:

Ahoj, nevím jak vypadá tvoje databáze (resp. tahle konkrétní tabulka), ale když už ten dotaz skládat na úrovni databáze, tak bych to řešil asi takhle:

select CAS CAS1, (select CAS from *** where ***) CAS2 from *** where ***;

Nějako mi ale není jasný jak to chceš omezovat (co bude za where), nebo jak spolu ty záznamy souvisí ...

Nahoru Odpovědět 25.3.2014 12:34
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
David Hynek
Redaktor
Avatar
Odpovídá na Posix
David Hynek:

ten druhý čas2 je vždy posunutý o 1 hodinu?

Jestli jo, tak to fakt nech až na PHP.

Nahoru Odpovědět 25.3.2014 12:44
Čím víc vím, tím víc věcí nevím.
Avatar
Paul
Člen
Avatar
Paul:

V mysql existuje funkce DATE_ADD, kterou by jsi zde mohl použít.
Vypadalo by to asi nějak takto:

SELECT cas1, DATE_ADD(cas1, INTERVAL 1 HOUR) FROM ... WHERE ...

Není to možná úplně přesně, ale tak nějak by to mohlo být.
Víc info najdeš tady:
http://www.abclinuxu.cz/…i-v-mysql-vi

 
Nahoru Odpovědět  +1 25.3.2014 14:52
Avatar
1Pupik1989
Člen
Avatar
1Pupik1989:

V SQL by to šlo také napsat. Třeba:

SET @before_time = (SELECT `time` FROM `test` LIMIT 1);
SELECT
  @before_time as `time1`,
  (@before_time := time) as `time2`
FROM `test`
LIMIT 1,18446744073709551615
Editováno 25.3.2014 15:43
 
Nahoru Odpovědět 25.3.2014 15:42
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.