MySQL - poskládání dotazu

mmm

Re:MySQL - poskládání dotazu
« Odpověď #15 kdy: 19. 01. 2018, 14:45:15 »
Citace od: ZAJDAN kdy 19. 01. 2018, 14:39:39
Citace od: mmm kdy 19. 01. 2018, 14:33:46
jste slepý? Sten ve druhém příspěvku uvedl opravené správné řešení.
schvalně si to na tom fiddlu zkus, zda Ti to bude fungovat...
každopádně si myslím, že není potřeba joinovat a stačilo by co jsem posilal

on chce pro každé jméno řádek s maxmálním datumem. Ten váš dotaz vrátí jen řádky s maxmálním datumem z celé tabulky.


ZAJDAN

  • *****
  • 2 110
Re:MySQL - poskládání dotazu
« Odpověď #16 kdy: 19. 01. 2018, 14:52:07 »
Citace od: mmm kdy 19. 01. 2018, 14:45:15
on chce pro každé jméno řádek s maxmálním datumem. Ten váš dotaz vrátí jen řádky s maxmálním datumem z celé tabulky.

OMG...tak si do primarniho SELECTU prida  Name a co potrebuje
https://www.db-fiddle.com/f/fnCT7fvrx9yAHHDrXfxQJ1/10
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

mmm

Re:MySQL - poskládání dotazu
« Odpověď #17 kdy: 19. 01. 2018, 14:58:44 »
stenova odpověď je správně. Prostudujte si jí.

fuk

Re:MySQL - poskládání dotazu
« Odpověď #18 kdy: 19. 01. 2018, 14:59:50 »
Citace od: Sten kdy 19. 01. 2018, 13:25:46
Jo, pro každou položku:
SELECT `Name`, `details`, `date`, `id`, `Flag`
FROM `table`
INNER JOIN (
    SELECT `Name`, MAX(`date`) AS `maxDate`
    FROM `table`
    GROUP BY `Name`
) `grouped`
ON `table`.`Name` = `grouped`.`Name` AND `table`.`date` = `grouped`.`maxDate`




Dekuji!!!! to je presne ono

ZAJDAN

  • *****
  • 2 110
Re:MySQL - poskládání dotazu
« Odpověď #19 kdy: 19. 01. 2018, 15:03:47 »
Citace od: mmm kdy 19. 01. 2018, 14:58:44
stenova odpověď je správně. Prostudujte si jí.

jiz jsem zkousel v dbfiddle ale neuspesne
a to co jsem postoval, udela presne to co zadatel chce
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.


Sten

Re:MySQL - poskládání dotazu
« Odpověď #20 kdy: 19. 01. 2018, 15:06:26 »
Citace od: ZAJDAN kdy 19. 01. 2018, 13:57:22
jen tak z hecu to zkousim, ale nedari se:
https://www.db-fiddle.com/f/fnCT7fvrx9yAHHDrXfxQJ1/7

To bude tím, že zkoušíte jiný dotaz ;) Máte tam GROUP BY, já tam mám SORT BY.

Citace od: ZAJDAN kdy 19. 01. 2018, 14:39:39
schvalně si to na tom fiddlu zkus, zda Ti to bude fungovat...
každopádně si myslím, že není potřeba joinovat a stačilo by co jsem posilal

Nestačilo. Uživatelé John a Josh mají každý jiná data.

mmm

Re:MySQL - poskládání dotazu
« Odpověď #21 kdy: 19. 01. 2018, 15:07:13 »
Citace od: ZAJDAN kdy 19. 01. 2018, 15:03:47
Citace od: mmm kdy 19. 01. 2018, 14:58:44
stenova odpověď je správně. Prostudujte si jí.

jiz jsem zkousel v dbfiddle ale neuspesne
a to co jsem postoval, udela presne to co zadatel chce


SELECT test.*
FROM `test`
INNER JOIN (
    SELECT `Name`, MAX(`date`) AS `maxDate`
    FROM `test`
    GROUP BY `Name`
) `grouped`
ON `test`.`Name` = `grouped`.`Name` AND `test`.`date` = `grouped`.`maxDate`;

ZAJDAN

  • *****
  • 2 110
Re:MySQL - poskládání dotazu
« Odpověď #22 kdy: 19. 01. 2018, 15:11:19 »
Citace od: mmm kdy 19. 01. 2018, 15:07:13
...
mohl by jsi to prosim zkusit v tom dbfiddle? a postnout sem link
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

ZAJDAN

  • *****
  • 2 110
Re:MySQL - poskládání dotazu
« Odpověď #23 kdy: 19. 01. 2018, 15:15:02 »
Citace od: Sten kdy 19. 01. 2018, 15:06:26
Nestačilo. Uživatelé John a Josh mají každý jiná data.
pravda, nevsiml jsem si ze u obouch jsem dal v mem testu stejne datetime
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

Sten

Re:MySQL - poskládání dotazu
« Odpověď #24 kdy: 19. 01. 2018, 15:16:52 »
Citace od: ZAJDAN kdy 19. 01. 2018, 14:52:07
OMG...tak si do primarniho SELECTU prida  Name a co potrebuje
https://www.db-fiddle.com/f/fnCT7fvrx9yAHHDrXfxQJ1/10

Subquery je interně taky INNER JOIN ;)

ZAJDAN

  • *****
  • 2 110
Re:MySQL - poskládání dotazu
« Odpověď #25 kdy: 19. 01. 2018, 15:20:26 »
Citace od: Sten kdy 19. 01. 2018, 15:16:52
Subquery je interně taky INNER JOIN ;)
:) dík za info...jinak už jsem přišel na to proč mi ten tvuj dotaz v dbfiddle nefachcil, bylo potreba pred sloupec Name doplnit tabulku
SELECT test.Name, details, date, id, Flag
FROM test
INNER JOIN (
    SELECT test.Name, MAX(date) AS maxDate
    FROM test
    GROUP BY Name
) AS grouped
ON test.Name = grouped.Name AND test.date = grouped.maxDate
;

tak tazateli a Stenovi dekuji, že jsem se zas něco přiučil...díky :_)
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

Kit

Re:MySQL - poskládání dotazu
« Odpověď #26 kdy: 19. 01. 2018, 15:38:43 »
Tohle mi sice funguje, ale nejsem si jist, jestli je to správně:

SELECT * FROM (
        SELECT Name, details, datum, id, Flag FROM tabulka ORDER BY datum desc
    ) as t
    GROUP BY Name;

pepa

Re:MySQL - poskládání dotazu
« Odpověď #27 kdy: 19. 01. 2018, 17:58:30 »
Citace od: Kit kdy 19. 01. 2018, 15:38:43
Tohle mi sice funguje, ale nejsem si jist, jestli je to správně:

SELECT * FROM (
        SELECT Name, details, datum, id, Flag FROM tabulka ORDER BY datum desc
    ) as t
    GROUP BY Name;


To není ani náhodou.

pepa

Re:MySQL - poskládání dotazu
« Odpověď #28 kdy: 19. 01. 2018, 18:03:24 »
Smiřte se s tím správně je ta varianta s JOIN a ještě Vám prozradím malé tajemství ORDER BY bude fungovat jen až po JOIN pokud ho provedete v tom selectu kde je group by tak se to ven nespropaguje. A opět ano kdysi by to fungovalo, ale doba se mění a programátoři databází využívají vlákna a více a ty více cpu jednotek a tím pádem jsou výsledky jiné než když dotaz běžel v jednom vlákně. Ale stále jsou zprávně co se popisu SQL týká. Na podobných dotazech po aktulizaci databáze už sleťela nejedna starší aplikace.