MySQL - poskládání dotazu

mmm

Re:MySQL - poskládání dotazu
« Odpověď #15 kdy: 19. 01. 2018, 14:45:15 »
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 092
    • Zobrazit profil
    • E-mail
Re:MySQL - poskládání dotazu
« Odpověď #16 kdy: 19. 01. 2018, 14:52:07 »
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 »
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 092
    • Zobrazit profil
    • E-mail
Re:MySQL - poskládání dotazu
« Odpověď #19 kdy: 19. 01. 2018, 15:03:47 »
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 »
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.

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 »
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

Kód: [Vybrat]
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 092
    • Zobrazit profil
    • E-mail
Re:MySQL - poskládání dotazu
« Odpověď #22 kdy: 19. 01. 2018, 15:11:19 »
...
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 092
    • Zobrazit profil
    • E-mail
Re:MySQL - poskládání dotazu
« Odpověď #23 kdy: 19. 01. 2018, 15:15:02 »
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 »
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 092
    • Zobrazit profil
    • E-mail
Re:MySQL - poskládání dotazu
« Odpověď #25 kdy: 19. 01. 2018, 15:20:26 »
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
Kód: [Vybrat]
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ě:
Kód: [Vybrat]
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 »
Tohle mi sice funguje, ale nejsem si jist, jestli je to správně:
Kód: [Vybrat]
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.