webForumDet fria alternativet

Namn från annan tabell

Databaser & SQL

7 svar · 460 visningar · startad av Arne

Medlem sedan maj 2000267 inlägg
Frågan#1

Har en selectsats där jag räknar antal medlemmar per förening från tabellen MEDLEM

SELECT COUNT(MEDLEM.FöreningId) AS [antal], MEDLEM.FöreningId From MEDLEM
Where (MEDLEM.DistriktId = 2)
GROUP BY MEDLEM.FöreningId
Order By MEDLEM.FöreningId

Tyvärr finns inte föreningsnamnet med i den tabellen (MEDLEM) utan den finns i tabellen DISTRIKT
FöreningId är det samma i tabellen MEDLEM och tabellen DISTRIKT

Nu visas bara columnen antal och FöreningId
Jag vill hämta columnen föreningsnamn från tabellen DISTRIKT så columnerna antal, FöreningId och Föreningsnamn visas.

Hur gör jag det. Har testat med join men får inte till det....

(använder MsSql)

Medlem sedan dec. 200012 464 inlägg
#2
SELECT COUNT(*) AS antal, 
          district.föreningsnamn
  From MEDLEM join district on medlem.föreningsid = district.föreningsid
Where MEDLEM.DistriktId = 2
GROUP BY district.Föreningsnamn
Order By district.Föreningsnamn
Medlem sedan maj 2000267 inlägg
#3

visa 3 columner

försöker visa även MEDLEM.FöreningId men får:
Column 'MEDLEM.Förening'id is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Vad felar?
Ursäkta dumma frågor......

Medlem sedan dec. 200012 464 inlägg
#4

Om du vill ha med fler kolumner i select-listan så måste du lägga till dem i group by också.

Medlem sedan maj 2000267 inlägg
#5

Antal Män och Kvinnor

Tack för svaren, börjar se en strimma ljus nu;-)
Nedan får jag ut det jag vill just nu.

Distriktets id, föreningens id, samt antal medlemmar per förening i distriktid 25

SELECT COUNT(*) AS antal, m.föreningid, d.föreningsnamn
From MEDLEM m INNER JOIN DISTRIKT on m.distriktid = d.distriktid And m.föreningid = d.föreningid
Where m.distriktid = 25
GROUP BY d.Föreningsnamn,  m.föreningid
Order By m.föreningid

Men för att krångla till det ännu mer....
I tabellen MEDLEM finns det även en column som heter SEX och alla medlemmar får värdet MAN eller KVINNA
Är det möjligt att i samma selectsats även lägga in 2 COUNT till. ta ut antal kvinnor och antal män per förening som listas?
Eller har jag övertro på sql:-)

Medlem sedan dec. 200012 464 inlägg
#6
SELECT COUNT(*) AS antal, 
      sum(case when sex = 'KVINNA' then 1 else 0 end) as F,
      sum(case when sex = 'MAN' then 1 else 0 end) as M,
      sum(case when sex not in('KVINNA','MAN') then 1 else 0 end) as T,
     m.föreningid, 
     d.föreningsnamn
From MEDLEM m INNER JOIN DISTRIKT d on m.distriktid = d.distriktid And m.föreningid = d.föreningid
Where m.distriktid = 25
GROUP BY d.Föreningsnamn,  m.föreningid
Order By m.föreningid
Medlem sedan maj 2000267 inlägg
#7

Oj, man kan bara buga för detta och inser snabbt att man har mycket att lära.
Tusen tack för hjälpen, och som du redan visste fungerar det perfekt.....

Medlem sedan juni 200032 967 inlägg
268 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)