Autor | Zpráva | ||
---|---|---|---|
janhuska Profil |
#1 · Zasláno: 20. 11. 2013, 07:49:51
dobre rano,
potreboval bych poradit s podminkami v least funkci v mysql u vyhodnoceni casů. SELECT LEAST(cas1, cas2, ..., cas6) As minhodnota FROM stavy ORDER BY minhodnota ASC; Cili z 6 jizd potrebuju vybrat nejlepsi cas a podle nej setridit, ale mam tam prazdne zaznamy kdy jezdec jede treba jen 3 jizdu a nebo nejede vubec a vse je prazdne .. a tim padem se mi radi na zacatek. Moc dekuji j. |
||
Kajman Profil |
#2 · Zasláno: 20. 11. 2013, 09:46:45
Je to takové neohrabané, ale snad něco jako
SELECT Least(Coalesce(cas1, cas2, cas3, cas4, cas5, cas6), Coalesce(cas2, cas1, cas3, cas4, cas5, cas6), Coalesce(cas3, cas1, cas2, cas4, cas5, cas6), Coalesce(cas4, cas1, cas2, cas3, cas5, cas6), Coalesce(cas5, cas1, cas2, cas3, cas4, cas6), Coalesce(cas6, cas1, cas2, cas3, cas4, cas5)) AS minhodnota FROM stavy ORDER BY minhodota IS NULL, minhodnota ASC Kdyby byly casy ve své tabulce a k jednomu uživateli by bylo třeba 1- 6 řádků, tak by se dalo použít jednoduše min a s vhodnými indexy by to mělo být i rychlejší, než dělat cas1-cas6. |
||
Joker Profil |
#3 · Zasláno: 20. 11. 2013, 10:07:54
janhuska:
Nejde o problém v návrhu databáze „Musíte pojmenovávat sloupce s indexem“? |
||
janhuska Profil |
#4 · Zasláno: 20. 11. 2013, 11:00:29
Joker:
taham to ze dvou tabulek .. slo mi jen o napad jak na dotaz, tak jsem to zjednodusil. Kajman: dekuji, jen mi to hazi: unknown column 'minhodnota' in 'order clause' a netusim proc (ten preklep minhodota jsem opravil) |
||
Kajman Profil |
#5 · Zasláno: 20. 11. 2013, 12:22:57
janhuska:
„taham to ze dvou tabulek“ ... „jen mi to haz“ Takže jste dotaz nějak upravil pro více tabulek a pak to přestalo fungovat? V tom případě pošlete nově sestavený dotaz, jinak se rady nedočkáte. |
||
janhuska Profil |
#6 · Zasláno: 20. 11. 2013, 12:39:13
momentalne jsem na tom takhle:
$dotaz = " SELECT jezdec.cislo As cislojezdec, jezdec.jmeno As jezdecjmeno, jezdec.prijmeni As jezdecprijmeni, jezdec.nick As jezdecnick, stavy.id As id, stavy.cas1 As cas1, stavy.cas2 As cas2, stavy.cas3 As cas3, stavy.cas4 As cas4, stavy.cas5 As cas5, stavy.cas6 As cas6, Least(Coalesce(stavy.cas1, stavy.cas2, stavy.cas3, stavy.cas4, stavy.cas5, stavy.cas6), Coalesce(stavy.cas2, stavy.cas1, stavy.cas3, stavy.cas4, stavy.cas5, stavy.cas6), Coalesce(stavy.cas3, stavy.cas1, stavy.cas2, stavy.cas4, stavy.cas5, stavy.cas6), Coalesce(stavy.cas4, stavy.cas1, stavy.cas2, stavy.cas3, stavy.cas5, stavy.cas6), Coalesce(stavy.cas5, stavy.cas1, stavy.cas2, stavy.cas3, stavy.cas4, stavy.cas6), Coalesce(stavy.cas6, stavy.cas1, stavy.cas2, stavy.cas3, stavy.cas4, stavy.cas5)) AS minhodnota FROM stavy, jezdec WHERE jezdec.cislo=stavy.cislo AND stavy.zavod = 1 ORDER BY minhodnota IS NULL, minhodnota ASC "; |
||
Kajman Profil |
#7 · Zasláno: 20. 11. 2013, 13:03:35
A jakou databázi v jaké verzi používáte?
|
||
janhuska Profil |
mysql 4.1.22 - bezi to jen na lokale pro vyhodnocovani z časomíry .. do toho bych nerad vrtal .. slouzi to jen na prubezne vystupy a tisky poradi atd.
|
||
Kajman Profil |
#9 · Zasláno: 20. 11. 2013, 13:37:21
Zkuste
select * from (soucasny select bez order by) t order by minhodnota IS NULL, minhodnota |
||
janhuska Profil |
#10 · Zasláno: 20. 11. 2013, 13:55:57
tohle vyjede seznam bez toho generovaneho sloupku minhodnota
zadal jsem do vsech prazdnych poli (kdy nejeli) cas 999,999 a pak to chodi .. takze si neporadi asi jen s temi uplne prazdnymi bunkami |
||
Kajman Profil |
#11 · Zasláno: 20. 11. 2013, 14:12:04
janhuska:
„tohle vyjede seznam bez toho generovaneho sloupku minhodnota“ Pokud v tom vnitřním dotaze v závorce je vypočítání sloupce minhodnota, tak select * musí vypsat i ji. |
||
Tori Profil |
#12 · Zasláno: 20. 11. 2013, 14:51:03
janhuska:
„takze si neporadi asi jen s temi uplne prazdnymi bunkami“ Buňky, kdy jezdec nejel, musí mít hodnotu NULL. Ne číslo 0 ani prázdný řetězec. Jinak coalesce nefunguje podle očekávání.
|
||
janhuska Profil |
#13 · Zasláno: 20. 11. 2013, 14:55:55
pokusim se tam dostat ty NULL a snad to pojede
moc dekuji za rady J. |
||
Časová prodleva: 10 let
|
0