Autor Zpráva
krupis
Profil *
Ahoj...
Potřeboval bych poradit s jedním SQL dotazem. Třídím tabulku na základě kritérií "body" a "rozdíl"...Rozdíl jsou vstřelené mínus obdržené branky :-) SQL dotaz vypadá takto:
'SELECT tym, zapasy, vyhry, remizy, prohry, vstrelene, obdrzene, rozdil, body FROM tabulka ORDER BY body DESC, rozdil DESC'
Podle bodů to seřadí v pohodě, v případě rovnosti bodů by to mělo řadit dle rozdílu. Sice to řadí správně, ale pouze pro kladné hodnoty. Takže týmy které mají kladné skóre to seřadí správně, ale týmy se záporným skóre to řadí jakoby s parametrem ASC.

Uvedu příklad:
Výsledky:
Tým A - Tým B 5:0
Tým C - Tým D 3:0
Tým E - Tým F 1:0

Čekal bych, že to seřadí takto:
1. Tým A: 5:0 +5 2b
2. Tým C: 3:0 +3 2b
3. Tým E: 1:0 +1 2b
4. Tým F: 0:1 -1 0b
5. Tým D: 0:3 -3 0b
6. Tým B: 0:5 -5 0b

Jenže to SQL seřadí takto:
1. Tým A: 5:0 +5 2b
2. Tým C: 3:0 +3 2b
3. Tým E: 1:0 +1 2b
4. Tým B: 0:5 -5 0b
5. Tým D: 0:3 -3 0b
6. Tým F: 0:1 -1 0b

Nevíte proč mi to nefunguje? Proč to jakoby nereaguje na záporné znaménko a místo DESC se to u záporného skóre chová jako ASC??? Děkuju mockrát za pomoc.
Aesir
Profil
[#1] krupis:
Vyzkoušejte:
ORDER BY CAST(rozdil AS SIGNED) DESC
krupis
Profil *
Díky, nyní vše funguje jak má. S MySQL pracuju nedlouho, proto bych se rád zeptal, jak zadaný příkaz funguje. Děkuji
krupis
Profil *
a taky proč můj SQL dotaz nefungoval :-)
Aesir
Profil
krupis:
jak zadaný příkaz funguje
Přetypuje před řazením hodnotu ze sloupce `rozdil` na celočíselný typ.

a taky proč můj SQL dotaz nefungoval :-)
Protože předpokládám, že sloupec `rozdil` je definovaný jako jeden z textových datových typů a podle toho se s ním také zachází.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0