Databáze > Firebird a Interbase

Divný výsledok

(1/1)

Stanislav Hruška:

Mám opakované záznamy (tučne) pre podmienky =1 a >1. Nerozumiem prečo.
T1 - prvá časť (Team1FK)
T2 - druhá časť. Po UNION (Team2FK)
COUNT(T.COUNTRYFK) je tu vo výsledku len kvôli kontrole. Samozrejme zodpovedá výsledku.

--- Kód: ---SELECT T.COUNTRYFK, C.TITLE, C.COUNTRYID, COUNT(T.COUNTRYFK)
FROM MATCHES M
  INNER JOIN TEAMS T ON M.TEAM1FK = T.TEAMID
  INNER JOIN COUNTRIES C ON T.COUNTRYFK = C.COUNTRYID
  INNER JOIN ROUNDS R ON M.ROUNDFK = R.ROUNDID
WHERE R.SEASONFK = 8363 AND M.REMATCH = False
GROUP BY T.COUNTRYFK, C.TITLE, M.REMATCH, C.COUNTRYID
HAVING COUNT(T.COUNTRYFK) > 1
UNION
SELECT T.COUNTRYFK, C.TITLE, C.COUNTRYID, COUNT(T.COUNTRYFK)
FROM MATCHES M
  INNER JOIN TEAMS T ON M.TEAM2FK = T.TEAMID
  INNER JOIN COUNTRIES C ON T.COUNTRYFK = C.COUNTRYID
  INNER JOIN ROUNDS R ON M.ROUNDFK = R.ROUNDID
WHERE R.SEASONFK = 8363 AND M.REMATCH = False
GROUP BY T.COUNTRYFK, C.TITLE, M.REMATCH, C.COUNTRYID
HAVING COUNT(T.COUNTRYFK) > 1
ORDER BY 2
--- Konec kódu ---

Stanislav Hruška:
Ráno je múdrejšie večera.
Kvôli testovaniu som do údajov zaviedol záznam navyše = chyba.
Teraz sa mi to oplatilo. Označil som si konfliktné údaje a vyjasnilo sa mi. Viď prílohu - vpravo.
Riešenie je tým pádom jednoduché. Najprv získam úplný dataset. Bez GROUP BY a HAVING. Tie uplatním až na tento Dataset :) 

Navigace

[0] Seznam témat

Přejít na plnou verzi