IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Paul
Člen
Avatar
Paul:16.2.2016 9:12

Ahoj, rád bych vás poprosil o radu jak vyřešit následující problém.
Jedná se o databázi prodejny aut. V tabulce A mám auta a sloupec s datumem a časem jejich prodeje. V tabulce B mám ty samé atributy, ale sleduji prodeje aut jiných prodejců.
Jde mi to to tabulky na sebe najoinovat tak, abych u auta, které prodám viděl cenu + datum a čas, za kolik a kdy se uskutečnil poslední předchozí a první následující prodej u konkurence.
To znamená chci vidět že já jsem prodal Škodu Superb 6.9.2015 17:36 a že poslední předcházející prodej u jiného prodejce byl uskutečněn 5.9.2016 13:20 a že první následující prodej Superba byl uskutečněn u jiného prodejce 6.9.2015 19:20.

Poradí někdo prosím? :-)

 
Odpovědět
16.2.2016 9:12
Avatar
Honza
Člen
Avatar
Honza:16.2.2016 11:33

Ahoj, klasickým joinem tohle neuděláš ;) Řešení bude určitě více, např. by se to dalo řešit tím, že si dotaz rozdělíš na 3 části:

  1. vytáhni si auto které jsi prodal a ke kterému budeš chtít dotáhnout další informace
  2. z tabulky B si dotáhni stejný typ auta který má nejvyšší datum prodeje ale toto datum je zároveň nižší než tvůj prodej
  3. z tabulky B si dotáhni stejný typ auta který má nejnižší datum prodeje ale toto datum je zároveň vyšší než tvůj prodej

V tuhle chvíli máš k dispozici potřebná data, teď je jen dáš dohromady, třeba podle typu auta. Konkrétní implementace záleží na tom jakou databázi používáš a jak máš strukturovaná data. Můžu se jen zeptat k čemu je tento report dobrý, resp. jak bude používán? Nedává mi totiž moc smysl sledovat předchozí a následující prodej ne globálně, ale ve vztahu k mému prodeji (když si vezmu nějaký svůj rok starý prodej, tak mi to ukáže kdy se prodalo poslední auto před mým prodejem a první po mém prodeji, což mi moc nedává smysl) :)

Nahoru Odpovědět
16.2.2016 11:33
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Avatar
Paul
Člen
Avatar
Paul:20.2.2016 10:13

Díky za odpověď, ale moc jsi mi nepomohl :-)
Je mi jasné, že si nejdřív najdu auto které potřebuju, pak cenu nižší a potom vyšší.
Ale spíš bych potřeboval pomoct se selectem aby dobíhal v nějakém rozumném čase.

 
Nahoru Odpovědět
20.2.2016 10:13
Avatar
Odpovídá na Paul
Neaktivní uživatel:20.2.2016 13:16

A nějaký select už jsi vymyslel nebo nemáš vůbec ponětí?

Nahoru Odpovědět
20.2.2016 13:16
Neaktivní uživatelský účet
Avatar
Paul
Člen
Avatar
Paul:20.2.2016 20:32

Select mám, ale mám to v práci a je to celkem složitý, dělá se tam cross join a pak se vybírají řádky podle určitých technických sloupců jako je rozdíl mezi datumy apod. Problém je, že ten select běží hodně dlouhou dobu a potřeboval bych to nějakým způsobem zrychlit...

 
Nahoru Odpovědět
20.2.2016 20:32
Avatar
Paul
Člen
Avatar
Odpovídá na Neaktivní uživatel
Paul:20.2.2016 23:23

Select mám, ale mám to v práci a je to celkem složitý, dělá se tam cross join a pak se vybírají řádky podle určitých technických sloupců jako je rozdíl mezi datumy apod. Problém je, že ten select běží hodně dlouhou dobu a potřeboval bych to nějakým způsobem zrychlit...

 
Nahoru Odpovědět
20.2.2016 23:23
Avatar
Odpovídá na Paul
Michal Štěpánek:21.2.2016 10:58

Podle mě máš trošku špatně navržené tabulky. Myslím, že bys měl mít tabulku vozidel, tabulku prodejců a pak tabulku prodejů, kde by byl jeden ze sloupců ID prodejce, tím pádem bys vybíral data pouze z této "hlavní" tabulky a k ní bys pouze JOINoval název prodejce a značky aut....

Nahoru Odpovědět
21.2.2016 10:58
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Paul
Neaktivní uživatel:21.2.2016 14:12

Bez toho, aniž bysme věděli, jak ten celý select a struktura tabulek vypadá, ti asi těžko pomůžeme.

Nahoru Odpovědět
21.2.2016 14:12
Neaktivní uživatelský účet
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.