[ Príspevkov: 13 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
MYSQL - DISTINCT nefunguje zoradenie

Registrovaný: 07.08.06
Prihlásený: 18.11.21
Príspevky: 947
Témy: 268 | 268
Bydlisko: Levice
NapísalOffline : 05.10.2014 13:20 | MYSQL - DISTINCT nefunguje zoradenie

Mam MySQL databazu so stlpcami ID, KOHO, KTO, DAT

potrebujem vypisat len jedinecne vysledky zo stlpca KTO /teda nie duplikatne/ ale zoradit vysledky podla DAT. (DAT je v tabulke ako datetime 0000-00-00 00-00)

Skusal som vsetko mozne, vytiahnut jedinecne udaje KTO sa mi podarilo, avsak nezoraduje to podla datumu.

Kód:
$mysqli->query("SELECT koho, kto, datum  FROM navstevy WHERE koho='$uid' group by koho ORDER BY max(datum) DESC LIMIT 10")



Skusal som aj trochu komplikovanejsie
Kód:
$mysqli->query("SELECT t.* FROM (SELECT kto, MAX(dat) as dat FROM navstevy WHERE koho='$uid' GROUP BY kto) a INNER JOIN navstevy t ON (t.dat = a.dat) ") ;


V tomto druhom pripade to funguje pekne ak sa jedna o rovnakeho uzivatela - vypise ho len raz, a s poslednym datumom. Avsak ked tam pribudne dalsi uzivatel so starsim datumom, zobrazuje ho skor, hoci by ho mal zobrazit na konci, kedze najprv ma ist novsi datum...

viete niekto poradit?


Offline

Správca fóra
Správca fóra
MYSQL - DISTINCT nefunguje zoradenie

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51 | 51
Bydlisko: Bratislava
NapísalOffline : 05.10.2014 22:19 | MYSQL - DISTINCT nefunguje zoradenie

Neviem, ci som to spravne pochopil - ty potrebujes vytiahnut najnovsi zaznam pre kazdu jedinecnu hodnotu kto, kde koho = $uid? Skus, ci bude vystup taky, aky potrebujes:
Kód:
SELECT koho, kto, dat
FROM navstevy AS n
WHERE n.koho = '$uid' AND NOT EXISTS (
   SELECT 1 FROM navstevy WHERE koho = n.koho AND kto = n.kto AND dat > n.dat
)
GROUP BY n.kto
ORDER BY n.dat DESC


_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
MYSQL - DISTINCT nefunguje zoradenie

Registrovaný: 07.08.06
Prihlásený: 18.11.21
Príspevky: 947
Témy: 268 | 268
Bydlisko: Levice
Napísal autor témyOffline : 08.10.2014 8:24 | MYSQL - DISTINCT nefunguje zoradenie

presne tak stenley ako pises - vsetky jedinecne hodnoty KTO kde KOHO = $uid zoradene podla dat. Ten tvoj sposob vyzera inteligentnejsie, mohol by fungovat.

Skusal som aj pomocou distinct, ale ani tym sposobom ani tymito mojimi uvedenymi som nevedel vytiahnut vsetky udaje, teda SELECT *. Nastastie tato tabulka ma len niekolko columnov, tak som to rovno vypisal SELECT koho, kto, dat...

a kupodivo ked som k tomu mojmu druhemu rieseniu doplnil na koniec ORDER BY dat DESC, tak to funguje tiez $mysqli->query("SELECT t.* FROM (SELECT kto, MAX(dat) as dat FROM navstevy WHERE koho='$uid' GROUP BY kto) a INNER JOIN navstevy t ON (t.dat = a.dat) ORDER BY dat DESC") ;


Tak ci tak by som do buducna rad vedel, ako vytiahnut vsetky hodnoty z riadku dtb (*), pricom jeden stlpec bude jedinecny. Teda napr. mam 10 stlpcov plus jeden s nazvom KTO. Aby som vedel vytiahnut vsetky jedinecne KTO, ale zaroven vsetky hodnoty stlpcov z toho riadku a zoradene podla niecoho.

Cize to iste co sme riesili teraz, akurat aby som netahal len 3 columny z dtb SELECT koho, kto, dat ale vsetky *.


Offline

Správca fóra
Správca fóra
MYSQL - DISTINCT nefunguje zoradenie

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51 | 51
Bydlisko: Bratislava
NapísalOffline : 08.10.2014 10:13 | MYSQL - DISTINCT nefunguje zoradenie

V tom mojom priklade mozes kludne nahradit vymenovane stlpce za *


_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Skúsený užívateľ
Skúsený užívateľ
MYSQL - DISTINCT nefunguje zoradenie

Registrovaný: 29.10.07
Prihlásený: 27.10.23
Príspevky: 1395
Témy: 30 | 30
Bydlisko: Bratislava
NapísalOffline : 08.10.2014 11:49 | MYSQL - DISTINCT nefunguje zoradenie

Nie stenley, vymenovane stlpce nemoze nahradit za * a som presvedceny, ze tvoj vyber ani nebude fungovat tak ako je napisany.
Dovodom je GROUP BY v ktorom nemas vymenovane vsetky stpce.

Spravne riesenie je to co pise neopagan (SELECT FROM SELECT)... jedine riziko vidim v tom ze ako kluc pouziva datum... ale ak sa moze spolahnut na to, ze v jednom case nebudu 2 navstevy, tak ej to OK.


_________________
PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME
Mobil: Xiaomi POCO F2 PRO
Offline

Správca fóra
Správca fóra
MYSQL - DISTINCT nefunguje zoradenie

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51 | 51
Bydlisko: Bratislava
NapísalOffline : 08.10.2014 12:33 | MYSQL - DISTINCT nefunguje zoradenie

Presvedceny mozes byt, ale pravdu nemas. Ten select funguje pre mysql tak ako je napisany, aj ked som prave zistil, ze group by je tam zrejme zbytocne.


_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Skúsený užívateľ
Skúsený užívateľ
MYSQL - DISTINCT nefunguje zoradenie

Registrovaný: 29.10.07
Prihlásený: 27.10.23
Príspevky: 1395
Témy: 30 | 30
Bydlisko: Bratislava
NapísalOffline : 08.10.2014 16:30 | MYSQL - DISTINCT nefunguje zoradenie

Beriem spat... mysql sa tu sprava trochu inak ako ine DB :) Chybu nevyhodi, ale aj napriek tomu tento pristup neodporucam (hoc moze niekedy zvysit rychlost vyberu).
- bud vieme, ze vsetky hodnoty v stlpci su rovnake a mozeme tam dat bezpecne group by
- alebo si tym nemozeme byt isty a urcime si ci chceme MIN/MAX/atd z daneho stlpca

Nepouzit na stlpec ziadnu agregovanu funkciu a ani ho neuviest v group by znemena, ze si mysql moze z daneho stlpca vybrat cokolvek... to moze robit problem pri zoradovani.
Podla toho co citam sa da toto spravanie vypnut v nastaveni servera, tak aby sa ohladom GROUP BY spravala databaza standardne.


_________________
PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME
Mobil: Xiaomi POCO F2 PRO
Offline

Čestný člen
Čestný člen
MYSQL - DISTINCT nefunguje zoradenie

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34 | 34
Bydlisko: Brno
NapísalOffline : 09.10.2014 20:28 | MYSQL - DISTINCT nefunguje zoradenie

Stenley, fungovat to funguje, ale je to humus. Ziadna ina DB toto nepovoluje, vysledok nie je deterministicky a MySQL sa nesprava v sulade so standardom (ako u mnoha inych veci). (Analogia: to je ako ucit niekoho, ze ternarny operator je asociativny zlava, lebo v PHP sa to tak sprava.)


Offline

Správca fóra
Správca fóra
MYSQL - DISTINCT nefunguje zoradenie

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51 | 51
Bydlisko: Bratislava
NapísalOffline : 09.10.2014 23:27 | MYSQL - DISTINCT nefunguje zoradenie

Namiesto toho, aby ste mi tu (zbytocne) vysvetlovali "ako sa veci maju", by ste radsej mohli pomoct neopaganovi v rieseni jeho problemu. Urcite by bol rad, keby mu poradili aj znalci databazovych standardov, aby bol sposob, akym sa k spravnemu vysledku dopracuje, co najefektivnejsi. Verim, ze prispejete aj vy svojim kusom kodu, nech sa ma cim inspirovat...


_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Skúsený užívateľ
Skúsený užívateľ
MYSQL - DISTINCT nefunguje zoradenie

Registrovaný: 29.10.07
Prihlásený: 27.10.23
Príspevky: 1395
Témy: 30 | 30
Bydlisko: Bratislava

To moje zbytocne vysvetlovanie som sem uviedol len kvoli zaznamu ;)
Nepochybujem ze ty vies ako veci funguju.

neopagan to vybera spravne (ten jeho druhy komplikovanejsi sposob). Jedine co mu tam na konci chybalo bol ORDER BY


_________________
PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME
Mobil: Xiaomi POCO F2 PRO
Offline

Užívateľ
Užívateľ
MYSQL - DISTINCT nefunguje zoradenie

Registrovaný: 07.08.06
Prihlásený: 18.11.21
Príspevky: 947
Témy: 268 | 268
Bydlisko: Levice
Napísal autor témyOffline : 10.10.2014 11:59 | MYSQL - DISTINCT nefunguje zoradenie

diky... ano to ORDER BY na konci pomohlo a tak to funguje. Len ak viete este poradit ohadom toho co som pisal - ak by som chcel vytiahnut vsetky udaje zo vsetkych columnov, nie len SELECT koho, kto, datum tak ako by sa malo postupovat?

Ked tvrdite ze nemozem do stenleyho verzie dat *, resp. mozem ale podla vas je to riesenie nestandardne?

Do toho mojho riesenia tam * nemozem pouzit, to nefungovalo tak.


Offline

Skúsený užívateľ
Skúsený užívateľ
MYSQL - DISTINCT nefunguje zoradenie

Registrovaný: 29.10.07
Prihlásený: 27.10.23
Príspevky: 1395
Témy: 30 | 30
Bydlisko: Bratislava
NapísalOffline : 10.10.2014 12:58 | MYSQL - DISTINCT nefunguje zoradenie

Nerozumiem, ved v tom tvojom (druhom) rieseni mas *...


_________________
PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME
Mobil: Xiaomi POCO F2 PRO
Offline

Užívateľ
Užívateľ
MYSQL - DISTINCT nefunguje zoradenie

Registrovaný: 07.08.06
Prihlásený: 18.11.21
Príspevky: 947
Témy: 268 | 268
Bydlisko: Levice
Napísal autor témyOffline : 10.10.2014 13:48 | MYSQL - DISTINCT nefunguje zoradenie

ah ano, pozeral som tu prvu verziu, nie druhu... a tam v druhej ma domotal ten vnutorny SELECT kto, MAX(dat) .. jasne, takto mozem vytiahnut vsetky data... takze dakujem


 [ Príspevkov: 13 ] 


MYSQL - DISTINCT nefunguje zoradenie



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Zoradenie v mysql typ varchar

v Databázy

2

539

30.09.2016 15:12

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

Update v MySQl nefunguje

v Databázy

2

451

11.11.2013 9:27

Villagers

V tomto fóre nie sú ďalšie neprečítané témy.

SELECT DISTINCT

v Databázy

1

968

04.01.2009 19:24

rooobertek

V tomto fóre nie sú ďalšie neprečítané témy.

zoradenie ?

v PHP, ASP

22

1564

21.08.2008 16:54

p360t

V tomto fóre nie sú ďalšie neprečítané témy.

Zoradenie výpisu

v PHP, ASP

3

502

23.11.2011 23:32

walther

V tomto fóre nie sú ďalšie neprečítané témy.

zoradenie array

v PHP, ASP

6

515

04.06.2010 10:42

camo

V tomto fóre nie sú ďalšie neprečítané témy.

zoradenie hodnot

v Databázy

2

873

11.08.2008 19:40

Speeder21

V tomto fóre nie sú ďalšie neprečítané témy.

Zoradenie asociativneho pola

v PHP, ASP

3

665

14.04.2010 12:04

stenley

V tomto fóre nie sú ďalšie neprečítané témy.

zoradenie podla abecedy

v PHP, ASP

12

1500

25.08.2008 22:17

tomxi

V tomto fóre nie sú ďalšie neprečítané témy.

zoradenie prvkov databazy

v PHP, ASP

1

897

05.11.2007 16:04

GoodWill

V tomto fóre nie sú ďalšie neprečítané témy.

zoradenie priecinkov - W10

v Operačné systémy Microsoft

4

566

18.01.2017 20:35

Miso122

V tomto fóre nie sú ďalšie neprečítané témy.

Zoradenie cisel Java

v Assembler, C, C++, Pascal, Java

2

1711

09.11.2012 8:54

fista1

V tomto fóre nie sú ďalšie neprečítané témy.

zoradenie podla nazvu

v Databázy

2

432

18.02.2013 20:51

neopagan

V tomto fóre nie sú ďalšie neprečítané témy.

zoradenie podla icq

v Redakčné systémy

5

535

30.03.2007 7:17

altt

V tomto fóre nie sú ďalšie neprečítané témy.

zoradenie podla abecedy

v Databázy

5

1567

06.09.2008 18:38

rooobertek

V tomto fóre nie sú ďalšie neprečítané témy.

zoradenie podla oblubenosi

v Databázy

4

739

16.06.2009 23:06

Snacker



© 2005 - 2025 PCforum, edited by JanoF