Select t.nummer,t.namn,l.namn as lag,
(case when m.spelar_ID=statistik.SpelarId then 1 else 0 end) as goals,
(case when m.ass_id=s.SpelarId then 1 else 0 end) + sum(case when m.ass_id1=statistik.SpelarId then 1 else 0 end) as ass,
(sum(case when m.spelar_ID=statistik.SpelarId then 1 else 0 end) + sum(case when m.ass_id=statistik.SpelarId then 1 else 0 end) + sum(case when m.ass_id1=statistik.SpelarId then 1 else 0 end)) as points
from statistik, matchfakta as m
left join trupper as t on statistik.spelarID = t.id
left join s_deltagande_lag as l on statistik.LagID = l.id
where statistik.spelarID in(m.spelar_id,m.ass_id,m.ass_id1)
and statistik.serieID =SerieID & " and m.serieID = SerieID & " and statistik.lagID=" & _visa & " and m.borttagen = 0 and m.vilken = 'goal'
group by statistik.spelarID,t.nummer,t.namn,l.namn
order by 6 desc, 4 desc
jag får det här felmeddelandet
System.Data.SqlClient.SqlException: The column prefix 'statistik' does not match with a table name or alias name used in the query.
Select t.nummer,t.namn,l.namn as lag,
(case when m.spelar_ID=statistik.SpelarId then 1 else 0 end) as goals,
(case when m.ass_id=s.SpelarId then 1 else 0 end) + sum(case when m.ass_id1=statistik.SpelarId then 1 else 0 end) as ass,
(sum(case when m.spelar_ID=statistik.SpelarId then 1 else 0 end) + sum(case when m.ass_id=statistik.SpelarId then 1 else 0 end) + sum(case when m.ass_id1=statistik.SpelarId then 1 else 0 end)) as points
from statistik inner join matchfakta as m
on statistik.spelarID in(m.spelar_id,m.ass_id,m.ass_id1)
left join trupper as t on statistik.spelarID = t.id
left join s_deltagande_lag as l on statistik.LagID = l.id
where statistik.serieID =SerieID & " and m.serieID = SerieID & " and statistik.lagID=" & _visa & " and m.borttagen = 0 and m.vilken = 'goal'
group by statistik.spelarID,t.nummer,t.namn,l.namn
order by 6 desc, 4 desc
Jag tycker mig ha upplevt att SQL server, helt icke standardmässigt, har problem om man blandar implicita och explicita joins.
System.Data.SqlClient.SqlException: Column 'l.namn' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Om jag tar med l.namn i group by blir det fel. Kan man lösa det med en fråga eller ska jag köra en fråga till för att hämta lagnamnet?
CREATE PROCEDURE statUte
@serieID int
AS
Select t.namn, t.nummer,mf.serieid,t.lagID,l.namn as lag,
sum(case when mf.spelar_ID = s.spelarID then 1 else 0 end) as goals,
sum(case when mf.ass_ID = s.spelarID then 1 else 0 end) + sum(case when mf.ass_ID1 = s.spelarID then 1 else 0 end) as ass,
sum(case when mf.spelar_ID = s.spelarID then 1 else 0 end) + sum(case when mf.ass_ID = s.spelarID then 1 else 0 end) + sum(case when mf.ass_ID1 = s.spelarID then 1 else 0 end) as points
from trupper as t inner join statistik as s
on s.spelarID = t.id left join
matchfakta as mf on mf.ass_id = s.spelarID or mf.spelar_ID = s.spelarID or mf.ass_id1 = s.spelarID
left join s_deltagande_lag as l on l.id = t.lagID
where mf.serieID =@serieID and s.serieID = mf.serieID and mf.vilken ='goal'
and mf.borttagen = 0
group by t.namn,t.lagID,l.namn,mf.serieid,t.nummer,s.spelarID order by points Desc, goals Desc
GO
285 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2