Zadejte hledaný výraz...

Proč nefunguje v tomto dotazu řazení podle data?

David Flídr
verified
rating uzivatele
(22 hodnocení)
27. 1. 2015 15:04:19
Mám SQL dotaz pro výpis hotelů a jejich termínů zájezdu a chci jednotlivé termíny odjezdů řadit dle data, bohužel mi order by dle data nefunguje. Poradí někdo:
// vypíše vždy hotel a jeho termíny
select SQL_CALC_FOUND_ROWS h.*, t.* from (select * from hotels limit 1, 20) h left join tours t on h.id = t.id_hotel and t.id<=ifnull((select r.id from tours r where t.id=r.id order by r.date_from desc limit 10,1),t.id)
díky za rady
27. 1. 2015 15:04:19
https://webtrh.cz/diskuse/proc-nefunguje-v-tomto-dotazu-razeni-podle-data/#reply1086264
Když si ten dotaz pořádně naformátujete, uvidíte, že řadíte jen subselect ve funkci IFNULL().
27. 1. 2015 15:27:50
https://webtrh.cz/diskuse/proc-nefunguje-v-tomto-dotazu-razeni-podle-data/#reply1086263
David Flídr
verified
rating uzivatele
(22 hodnocení)
27. 1. 2015 15:52:38
Ano, máte pravdu, ale když připíšu na konec dotazu order by t.date_from , řadí to sice správně dle datumu, ale zase mám na přeskáčku jednotlivé hotely
třeba:
hotel 1 - datum 1
hotel 2 - datum 1
hotel 2 - datum 2
hotel 1 - datum 2 atd.
potřeboval bych dosáhnout výsledku viz:
hotel 1 - datum 1
hotel 1 - datum 2
hotel 2 - datum 1
hotel 2 - datum 2 atd.
27. 1. 2015 15:52:38
https://webtrh.cz/diskuse/proc-nefunguje-v-tomto-dotazu-razeni-podle-data/#reply1086262
qwertr
verified
rating uzivatele
(7 hodnocení)
27. 1. 2015 15:58:38
tak mu musis povedat, ze musi triedit najskor podla hotelu a az potom podla datumu.
potrebujes mat napisane takto
Kedze netusim, ake stlpce maz v hotels a select maz v tvare select * from, tak to maz triedenie najskor pod id_cka hotelu a potom podla datumu. Ked budes chciet triedit podla ineho stlpca ako id -cka, tak len zmen nazov
27. 1. 2015 15:58:38
https://webtrh.cz/diskuse/proc-nefunguje-v-tomto-dotazu-razeni-podle-data/#reply1086261
David Flídr
verified
rating uzivatele
(22 hodnocení)
27. 1. 2015 16:09:41
Paráda, díky moc za pomoc. Ještě jedna drobnost. Jak omezím výpis počtu řádků z tours (datumů) k jednotlivým hotelům? Vypadá to že LIMIT 10, 1 moc nefunguje
27. 1. 2015 16:09:41
https://webtrh.cz/diskuse/proc-nefunguje-v-tomto-dotazu-razeni-podle-data/#reply1086260
nejspíš dělá něco jiného, než co očekáváte.
Přečtěte si manuál - první číslo je offset, druhé počet.
Stojí navíc na místě, kde nedává smysl.
Pokud chcete omezit počet tours, potřebujete buď dotaz přepsat, nebo se dotázat na tours pro každý hotel zvlášť.
K přepsání vám může napomoci tento článek
How to select the first/least/max row per group in SQL · Xaprb
27. 1. 2015 16:24:24
https://webtrh.cz/diskuse/proc-nefunguje-v-tomto-dotazu-razeni-podle-data/#reply1086259
David Flídr
verified
rating uzivatele
(22 hodnocení)
28. 1. 2015 21:25:53
Tak jsem podle vašich rad zkusil upravit dotaz na:
Nyní už vypíše 2 data na hotel a hotely seřadí dle idčka, ale vypíše to data jen pro 6 hotelů, i když mám v limitu nastavené 20. Díky za rady a trpělivost :)
28. 1. 2015 21:25:53
https://webtrh.cz/diskuse/proc-nefunguje-v-tomto-dotazu-razeni-podle-data/#reply1086258
qwertr
verified
rating uzivatele
(7 hodnocení)
28. 1. 2015 22:12:13
Nie je nahodou problem v tomto ?
Podla mna vytahujes len take hotely, ktore maju pre hotel v tabulke tuours maximalne 2 zaznamy.
Tych 6 hotelov co ti naslo, nema prave 2 v tabulke tours 2 zaznami ?
Skus nieco taketo, mozno to bude fungovat
28. 1. 2015 22:12:13
https://webtrh.cz/diskuse/proc-nefunguje-v-tomto-dotazu-razeni-podle-data/#reply1086257
David Flídr
verified
rating uzivatele
(22 hodnocení)
29. 1. 2015 06:16:00
Obávám se, že MySQL nepodporuje TOP.
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2 * from tours a where a.id_hotel = h.id) t on h.id = t.id_hotel order by h.id' at line 2
A i když tam hodím limit, ta to zase řve
#1054 - Unknown column 'h.id' in 'where clause'
29. 1. 2015 06:16:00
https://webtrh.cz/diskuse/proc-nefunguje-v-tomto-dotazu-razeni-podle-data/#reply1086256
Pro odpověď se přihlašte.
Přihlásit