Hmm, jag kan förklara vad jag försöker göra
dummy left outer join match_stats
on (match_stats.tid\15 = iStart\15 )
innebär att man får alla poster från tabellen dummy oavsett om det finns matchande poster i tabellen
match_stats.
Om det inte finns några matchande poster i den högra (match_stats) tabellen så får man en post med
bara null i den högra tabellens kolumner.
På så sätt får man minst en post för varje intervall.
\ betyder heltalsdivision
Resultatet av denna join matchas sedan mot tabellen match. Här behövs också en outer join för annars så försvinner de poster som innehåller null.
Jag upptäckte att det var en parentes för mycket i frågan. Vet ej om det har någon betydelse men kan vara värt att testa.
SELECT cstr(iStart) & '-' & cstr(iEnd) As intervall,
count(*) As antal
FROM (dummy left outer join match_stats
on (match_stats.tid\15 = iStart\15 ))
left outer join [match]
on (year(match.datum)=year(Date())
And match.lag='A'
And match_stats.matchId=match.id
AND match_stats.mål = True)
GROUP BY iStart,iEnd
Om detta inte fungerar så vt jag inte riktigt hur man skal göra med Jet SQL. Det går ju alltid att hantera det i klienten när man skriver ut data, då man kontrollera om ett intervall saknas.
q = "SELECT iif(match_stats.tid <= 15, '0-15', iif(match_stats.tid <= 30, '15-30', iif(match_stats.tid <= 45, '30-45', iif(match_stats.tid <= 60, '45-60', iif(match_stats.tid <= 75, '60-75', '75-90'))))) As intervall, count(*) As antal
FROM [match], match_stats
WHERE (year(match.datum)=year(Date())) And (match.lag='A') And (match_stats.matchId=match.id) AND (match_stats.mål = True)
GROUP BY iif(match_stats.tid <= 15, '0-15', iif(match_stats.tid <= 30, '15-30', iif(match_stats.tid <= 45, '30-45', iif(match_stats.tid <= 60, '45-60', iif(match_stats.tid <= 75, '60-75', '75-90'))))) order by match_stats.tid"
set rs = connect.execute(q)
pTid = 0
while not rs.eof
if cint(rs("tid") ) - pTid > 15 then
'missat intervall skriv ut lämplig info
pInt = cint(rs("tid"))
else
'skriv ut som vanligt
end if
rs.movenext
wend