Oznámení
Distinct přes Fluent Interface
před 9 lety
- Mesiah
- Člen | 242
Dobrý den,
prosím Vás, jak přidat k dotazu DISTINCT
přes Fluent
Interface?
před 9 lety
- phx
- Člen | 652
Tusim ze select('DISTINCT')
nebo
select('DISTINCT [sloupecek]')
. Mozna by to slo
i $fluent->DISTINCT()->select(...)
před 9 lety
- westrem
- Člen | 398
dibi::select('DISTINCT [col1], [col2]')->from('[table]');
Osobne vzdy rad pomozem ak viem ako, no neda mi nespytat sa: vyskusal si si vobec aspon nejaku variantu kym si to postol na forum?
před 9 lety
- Proki
- Backer | 66
dibi::select(...)->setFlag('distinct')->from(...)
před 9 lety
- rokerkony
- Člen | 123
distinct se da vyresit i pres groupBy a je to mnohem databazovejsi reseni…
před 9 lety
- Ondřej Brejla
- Člen | 748
V čempak?
před 9 lety
- rokerkony
- Člen | 123
databazovejsi asi bylo spatne slovo… a neplati to pro vsechny pripady ale pri pouziti „velke“ databaze muze byt mnohdy rychlejsi…
nejvetsi rozdil je snad v tom ze groupBy eliminuje duplicity jako prvni a pak pracuje s daty, na rozdil od DISTINCT, ktery odstranuje duplicity pozdeji…
před 9 lety
- Ondřej Brejla
- Člen | 748
Principielně je group by k něčemu uplně jinému, k vytyčení skupin na kterých jsou následně aplikovány agregační funkce. To, že mohu udělat group by za všechny sloupce a výsledek je stejný jako s distinct je spíš vedlejší efekt. Nehledě na to, že je takový zápis nepohodlný (2× vypisuji seznam sloupců – jednou v klauzuli select a pak ještě jednou v group by), je pro budoucího čitatele kódu mnohem více wtf.
Pokud uvedu distinct, hned je jasné o co jde. Pokud vidí group by klauzuli, čekám agregace a pokud je nevidím, koukám jak sůva z nudlí:-) Takže ano, group by se dá použít, ale nepoužil bych ho:-)
před 9 lety
- phx
- Člen | 652
westrem napsal(a):
Osobne vzdy rad pomozem ak viem ako, no neda mi nespytat sa: vyskusal si si vobec aspon nejaku variantu kym si to postol na forum?
Ne ted, ale kdysi jo. A vim, ze jedna z nich je urcite OK. Takze lepsi nejaka odpoved nez zadna:)
před 9 lety
- westrem
- Člen | 398
phx napsal:
Jeminenko, to nebolo myslene na teba! Ale na Mesiah-a, pretoze den predtym
postol podobny thread na pripad SUM
a mam pocit, ze proste co
akutne potrebuje tak postne na forum, pritom vyskusat si to, je len otazka
dopisania ->test()
na koniec fluent-u.
K tomu distinctu a group by. Ano niekedy sa to da nasimulovat, ale nemyslim si, ze je to spravny pristup. Ved pri distinct nevies urcit, ktora hodnota sa ti vrati v pripade duplicit, kdezto pri group by tam urcitu moc nad tym clovek ma.
Je vsak pravda, ze distinct znizuje vykonnost a nemal by sa pouzivat pokial nie je vyslovene nutny.
před 9 lety
- phx
- Člen | 652
westrem napsal(a):
Jeminenko, to nebolo myslene na teba!
V poho:)
DISTINCT by mel zajistit aby jsi ve vysledku nemel duplicitni radky. Takze by problem nemel byt v tom, ze nevis jaka hodnota tam bude.
Osobne si myslim, ze DISTINCT by mel byt vykonejsi nez nejaky slozity groupovani. Ale netestoval jsem to…
před 9 lety
- westrem
- Člen | 398
http://www.mysqlfaqs.net/…ork-in-MySQL
Islo mi skorej o to, ze niekto si moze mysliet, ze DISTINCT
eliminuje duplicitu napr len pri stlpci kde je uvedeny. A potom ked fetchuje
viac riadkov moze dostavat zle vysledky.