---
title: "problem med sql-fråga"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/89667-problem-med-sql-fråga"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "andreas_lindh"
published: "2003-11-04T21:39:14.000Z"
updated: "2003-11-07T10:44:47.000Z"
replies: 5
views: 320
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/89667-problem-med-sql-fråga"
---

# problem med sql-fråga

## #1 — andreas_lindh, 2003-11-04T21:39Z

jag har den här frågan

```
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.
```

Permalänk: https://www.webforum.nu/p/89667

## #2 — LarsG, 2003-11-05T13:58Z

```
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.

Permalänk: https://www.webforum.nu/p/1198146

## #3 — andreas_lindh, 2003-11-05T15:08Z

Tack :)

Nu fick jag ett nytt felmeddelande

```
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?

Permalänk: https://www.webforum.nu/p/1198176

## #4 — LarsG, 2003-11-05T15:27Z

Varför blir det fel då?

Finns det alltså olika l.namn inom de kolumner du grupperar på? I så fall vilket av dessa namn vill du ha?

Mysql väljer ju något (slumpmässigt).

För att få igenom frågan så kan du alltid applicera en aggregatfunktion på l.namn i select-listan. T.ex. max(l.namn)

Permalänk: https://www.webforum.nu/p/1198187

## #5 — andreas_lindh, 2003-11-05T16:43Z

Du kan se hur det blir här
<http://www.tibroik.com/ShowDPoints.aspx?serieID=42>

Samma spelare kommer med flera gånger istället för att poängen räknas ihop.

Permalänk: https://www.webforum.nu/p/1198227

## #6 — andreas_lindh, 2003-11-07T10:44Z

Nu har jag löst det. 

```
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
```

Permalänk: https://www.webforum.nu/p/1199063

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/89667-problem-med-sql-fråga
