Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Diskuze na Lopuchu,
pohlazení na duchu

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Klub Database (mysql,...) [ŽP: neomezená] (kategorie Programování) moderuje melkor_unlimited.
Archiv
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help
 Titulek, text příspěvku  
Opište pozpátku následující text bez prostředního znaku: rnkvfsx
[ 1008 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
straka82 Straka82 20.10.2017 14:07  1502
Diky za rady, zkousel jsem to a nejrychlejsi je ta prvni verze s NOT EXISTS.
themajkl themajkl All those moments will be lost in time - like tears in rain. 19.10.2017 20:23  1501
pepak [1500]: A jo, já jsem to bral tak, že chce řádky jméno - datum.
pepak pepak - Pepak.net 19.10.2017 19:21  1500
TheMajkl: A sloupeček number???

Straka82: Dělá se to obecně technikou 1) vybrat nejvyšší datumy pro každého uživatele a 2) následně je použít pro výběr příslušných řádků. Takže něco jako:

SELECT a.*
FROM tabulka a
JOIN (SELECT b.name, MAX(b.date) AS date FROM tabulka b GROUP BY b.name) x ON a.name=x.name AND a.date=x.date

Různých variant je asi tisíc, jde to udělat bez subselectu jen pomocí agregačních funkcí, může být vhodné to udělat pomocí CTE, atd. Hrozně záleží na tom, v jaké databázi a k čemu to chceš použít. Některé databáze pro tohle mají mnohem efektivnější konstrukty, například. Některá použití také (může být vhodnější udělat si výběr pomocí uložené funkce, například).
themajkl themajkl All those moments will be lost in time - like tears in rain. 19.10.2017 11:39  1499
Ještě by to asi šlo nějak jako

select a.name, (select max(b.date) from TAB b where a.name=b.name) datum
from TAB a
group by 1

straka82 Straka82 19.10.2017 07:38  1498
To je zase to "not exists", ktere moc nedavam :D Diky!
themajkl themajkl All those moments will be lost in time - like tears in rain. 19.10.2017 06:15  1497
Straka82 [1496]:
V informixu nějak jako
select a.id,a.name,a.date
from TAB a
where not exists (select b.id from TAB b
where b.name=a.name
and b.date>a.date)
straka82 Straka82 18.10.2017 23:51  1496
Dalsi dotaz :D

Mam tuhle tabulku

id|name|number|date
1|peter|2|2017-09-18
2|peter|1|2017-10-03
3|james|4|2017-09-05
4|james|1|2017-10-10
5|james|0|2017-10-15
6|kate|4|2017-09-16
7|kate|2|2017-10-17

A pro kazdou osobu chci vypsat radek s nejaktualnejsim datem. Vysledek by byl tento:

2|peter|1|2017-10-03
5|james|0|2017-10-15
7|kate|2|2017-10-17

Jaky dotaz to udela? Neco takoveho:

SELECT id, name, number, date
FROM table
GROUP BY id, name, number, date
HAVING date the latest

Diky moc
knedle knedle online - Krabice živých 8.7.2016 08:42  1495
tak napravit se to da jednim sql na tabulku, ne?
pepak pepak - Pepak.net 8.7.2016 06:01  1494
To vypadá na to, že migrační program nepočítá s tím, že rok 2000 byl přestupný.
tvx tvx Myslet si, že svět je JEN takový, jak - ho v daný čas můžeme pochopit je hloupé. 8.7.2016 05:50  1493
Tady skradlouho nikdo nebyl.

neporkal jste se nekdo s tim, ze pri migraci dat z mysql je najednou kazde datum o den starsi? z 7.7.2016 je 6.7.2016?
straka82 Straka82 8.2.2015 20:16  1492
H, tak to asi jede, dekuji pekne ")
themajkl themajkl All those moments will be lost in time - like tears in rain. 8.2.2015 20:10  1491
Z hlavy
select a.*
  from pocty a
    where not exists (select b.cena from pocty b
                        where a.id!=b.id
                              and b.pocet_lidi=a.pocet_lidi
                              and b.cena<a.cena)

?
straka82 Straka82 8.2.2015 20:01  1490
Mam tabulku "pocty":

id|pocet_lidi|cena|misto
--------------
1|2|100|praha
2|2|120|usti
3|2|90|ostrava
4|3|150|brno
5|3|120|olomouc
6|4|200|pardubice
7|4|220|hradec

jakym dotazem vyberu vsechny pocty_lidi s nejmensi cenou? tedy vysledek aby byl:

3|2|90|ostrava
5|3|120|olomouc
6|4|200|pardubice

? Zkousel jsem vselijake slozene, vnorene dotazy, having (min) atd, uz mi z toho jde hlava kolem :) Diky moc
knedle knedle online - Krabice živých 30.3.2014 20:30  1489
King [1488]: vim, ze to reseni kulha na obe nohy, ale v ramci toho jak si to predstavuju (celou funkčnost) je to (pro mne) nejvyhodnejsi

postgres, json field - zajimave, neznal jsem, budu o tom premyslet

nicmene uz to mam hotovo, takže okamzity přechod nehrozi - ted budu ladit a ladit sql
king King Born to be king - ... 28.3.2014 20:04  1488
Na to je SQL skutecne velmi velmi nevhodna platforma. Doporucoval bych alespon pouzit Postgres a jeho JSON field.

Jinak ze zkusenosti (stavel jsem podobne db ala imdb a spol) si usetris hodne prace kdyz proste budes mit specializovane tabulky + nastroje na jejich spravu spis nez mit super obecne tabulky a snazit se to postavit v SQL nad tim.

[ 1008 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt