Autor | Zpráva | ||
---|---|---|---|
freeTel Profil * |
#1 · Zasláno: 18. 3. 2020, 07:37:17
Zdravím, mám dotaz co mi funguje nadmíru skvěle a je důležité to volat druhým dotazem. Jediné co mi tam nejde dosadit je posloupnost, kterou jsem zkoušel a bez výsledku. Dotazu mi to neseřadí a když to dám mimo závorky, tak je chyba. Jde nějak docílit řazení nebo by se musel zmenit celkově dotaz? Děkuji
us.id IN(SELECT ob.id_user FROM objednavky ob ORDER BY (ob.stav='N') DESC,ob.stav ASC) |
||
blaaablaaa Profil |
#2 · Zasláno: 18. 3. 2020, 08:04:20
freeTel:
Ono to seřadí, ale v rámci poddotazu, kde je to zbytečné. Proč je to řešeno poddotazem a ne spojením tabulek? |
||
freeTel Profil * |
#3 · Zasláno: 18. 3. 2020, 08:09:10
Je to kvůli podmince na tabulky doručovacího města. Jinak to být bohužel nemůže.
|
||
freeTel Profil * |
#4 · Zasláno: 18. 3. 2020, 13:37:57
Upravil jsem to a logika mi říkala, že po refresh to bude dělat co chci a ouvej. Nedělá :-)
us.id IN(SELECT ob.id_user FROM objednavky ob ORDER BY (ob.stav='N') DESC,ob.stav ASC) ORDER BY us.id DESC |
||
Kajman Profil |
#5 · Zasláno: 18. 3. 2020, 14:18:09
Asi nechápete základy sql, že cpete order by do míst, kde nemůže mít žádný vliv a ještě pak nějaký vliv čekáte.
|
||
freeTel Profil * |
Kajman:
Zkouším se logicky dopracovat k výsledku Už jsem to vyřešil, tak děkuji za Váš čas |
||
Kajman Profil |
#7 · Zasláno: 18. 3. 2020, 15:43:49
Řazení ovlivníte ORDER BY klauzulí hlavního dotazu. Osobně bych si joinul zgroupovaná data z tabulky objednavky, aby bylo podle čeho řadit. Šlo by asi využít i korelovaný poddotaz v order by části, ale rychlost asi nebude valná (pokud se tedy uživatelé nějak výrazně nefiltrují v části dotazu, kterou jste neposlal).
|
||
freeTel Profil * |
Filtrují. Proto to řeším takhle blbě, ale vyřešil jsem to:
1. dotaz jen na tabulku, kterou chci řadit a vytáhnul jsem si už seřazená data 2. do dotazu, který mi už vrací výsledky jsem dal ORDER BY field a tím jsem vše vyřešil. Není to moc elegantní cesta, ale jediná možná |
||
Kajman Profil |
#9 · Zasláno: 18. 3. 2020, 16:09:21
freeTel:
„ale jediná možná“ O tom silně pochybuji. Ale klidně si to ne tak nechte, je to Vaše vizitka. |
||
freeTel Profil * |
#10 · Zasláno: 18. 3. 2020, 16:13:27
Jaké jsou další možnosti?
|
||
freeTel Profil * |
Jaké jsou další možnosti?
Jedná se mi seřadit dotaz, který jste mi pomohl/dal dohromady: Dvě tabulky z dotazem na město |
||
Kajman Profil |
freeTel:
„Jaké jsou další možnosti?“ Přečtěte si znovu [#7] V tom ukázkovém schématu bych čekal tabulku s číselníkem stavů objednávky. Tam bych si dal sloupec priorit, jak se mají stavy řadit. Jeden uživatel může mít více objednávek s různými stavy, tak se může třeba říci, že se řadí podle nejmenší priority ze všech jeho zakázek. Je tam nástřel varianty s joinem i s korelovaným poddotazem. Ověřte si na datech odpovídajících skutečnému nasazení, která varianta bude rychlejší (pro testy si nezapomeňte zakázat sql cache). sqlfiddle.com/#!9/93aa77/5 edit: v druhém dotazu zbyl nepotřebný join při kopírování sqlfiddle.com/#!9/93aa77/7 |
||
freeTel Profil * |
Kajman:
Ten dotaz je hrozně dlouhý a je tam mnoho dotazů + tabulka navíc. Moje řešení sice je hamba, ale funkční a s měně zatěžuje server. Věřím, že Vaše řešení je profesionálnější, ale mnohem náročnější na server a v podstatě mi nenabídne uživatele co má u objednávky stav N jako prvního. Upřímně jsem to ani netestoval. Vážím si Vaší pomoci a času, který jste na to vynaložil a nechci aby to vyznělo nevděčně, ale je to jen můj názor na danou věc. Kajman: Jsem se na to podíval pořádně a ta další tabulka určuje prioritu řazení. Je to zajímavé. |
||
Tomášeek Profil |
#14 · Zasláno: 19. 3. 2020, 07:39:57
freeTel:
„Moje řešení ... měně zatěžuje server.“ Jsi si tím jistý? Máš to změřené? „Upřímně jsem to ani netestoval.“ Hm, myslím, že tady je to házení perel sviním. Proč se tedy ptáš, když řešení dodané na zlatém podnosu ani nevyzkoušíš? Good luck s tímto přístupem. Doufám, že si to uvědomí napříště i Kajman, že je to s tebou ztráta času... |
||
freeTel Profil * |
Tomášeek:
byl jsem unavený z práce a řešení jsem použil a chtěl jsem poděkovat. Jen jsem psal svůj pohled, který jsem přehodnotil a jestli dovolíte, tak si vyhrazuji v životě mít svůj názor. Jste hodný pokud mi to dovolíte :-) Nejsem tady pro hádky ani urážky, tak pro příště si své přirovnání nechte. Kajman: Opět moc děkuji a chci se zároveň omluvit. Ano, nejen, že je Váš dotaz profesionálnější, ale i přehlednější v kodu. Děkuji |
||
Časová prodleva: 4 roky
|
0