Databáze > Firebird a Interbase
Nezmyselný výsledok pri CASE
(1/1)
Stanislav Hruška:
Mám nižšie uvedený kód. Problém je v tom, že G1 a G2 majú totožné výsledky. Ak to dám priamo proti tabuľke, tak sú samozrejme rôzne. Neviem prísť na dôvod tohto nezmyslu. Vždy sú ťahané hodnoty podľa T2. Viď obrázok.
--- Kód: ---WITH TM AS (SELECT DISTINCT M.TEAM1FK AS TEAMFK FROM MATCHES M WHERE M.ROUNDFK = 10568),
R AS (SELECT M.ROUNDFK, M.TEAM1FK, M.TEAM2FK,
CASE WHEN M.TEAM1FK = TM.TEAMFK THEN M.GOAL1 + M.GOAL2 END AS G1,
CASE WHEN M.TEAM2FK = TM.TEAMFK THEN M.GOAL2 + M.GOAL1 END AS G2,
********
FROM MATCHES M
INNER JOIN TEAM_NAMES N1 ON N1.TEAMFK = M.TEAM1FK
INNER JOIN TEAM_NAMES N2 ON N2.TEAMFK = M.TEAM2FK
INNER JOIN TM ON TM.TEAMFK = M.TEAM1FK OR TM.TEAMFK = M.TEAM2FK
INNER JOIN ROUNDS R ON M.ROUNDFK = R.ROUNDID
INNER JOIN SEASONS S ON R.SEASONFK = S.SEASONID
--- Konec kódu ---
Už som s tým stratil veľa hodín. Má niekto nejaké tušenie prečo to tak je?
Stanislav Hruška:
Taká perlička k tomu. Dané údaje zobrazujem dvoma spôsobmi. Základný text je rovnaký. Je tam rozdiel v jednej časti. K tej som sa ani nedostal.
V jednom prípade to funguje podľa očakávania, v druhom to dáva nezmyselne rovnaké výsledky.
Taká akademická otázka: Môžu generované polia, v rámci jediného SELECT-u, ovplyvniť správanie polí pred nimi?
Stanislav Hruška:
Problém zmizol sám od seba.
Jan Fiala:
Proste staci na tvuj dotaz hned nedeagovat, chvili pockat a problem sam zmizi :-D
Stanislav Hruška:
Ja som presvedčený, že to tak robíte ;)
Navigace
[0] Seznam témat
Přejít na plnou verzi