Har ett himla mystiskt problem med nästlade select.
Mitt mål är att få en tabell som ser ut så här:
Ort | Företag1 | Företag 2 | Företag 3 osv...
Uppsala | 1 | 2 | 1 osv...
Örebro | 2 | 0 | 1 osv...
Det löste jag med en nästlad select-sats som ser ut så här:
select distinct ort,
(select count(*) from tblForetag as ti where ty.ort = ti.ort and ti.Foretag = 'Foretag1') AS Foretag1,
(select count(*) from tblForetag as ti where ty.ort = ti.ort and ti.Foretag LIKE '%Foretag2') AS [Foretag2],
(select count(*) from tblForetag as ti where ty.ort = ti.ort and ti.Foretag = 'Foretag3') AS Foretag3,
(select count(*) from tblForetag as ti where ty.ort = ti.ort and ti.Foretag = 'Foretag4') AS Foretag4,
(select count(*) from tblForetag as ti where ty.ort = ti.ort and ti.Foretag = 'Foretag5') AS Foretag5,
(select count(*) from tblForetag as ti where ty.ort = ti.ort and ti.Foretag = 'Foretag6') AS Foretag6,
(select count(*) from tblForetag as ti where ty.ort = ti.ort and ti.Foretag = 'Foretag7') AS Foretag7,
(select count(*) from tblForetag as ti where ty.ort = ti.ort and ti.Foretag = 'Foretag8') AS Foretag8
from tblForetag as ty WHERE Foretag NOT LIKE 'Foretag9%' AND Gren NOT LIKE 'Underforetag%'
Mitt andra mål är att bara visa de orter som gäller för de enskilda företagen så jag tex. kan välja att bara se hur många företag som ligger på samma ort som Företag1.
Detta löste jag så här:
select distinct ort,
(select count(*) from tblForetag as ti where ty.ort = ti.ort and ti.Foretag = 'Foretag1') AS Foretag1,
(select count(*) from tblForetag as ti where ty.ort = ti.ort and ti.Foretag LIKE '%Foretag2') AS [Foretag2],
(select count(*) from tblForetag as ti where ty.ort = ti.ort and ti.Foretag = 'Foretag3') AS Foretag3,
(select count(*) from tblForetag as ti where ty.ort = ti.ort and ti.Foretag = 'Foretag4') AS Foretag4,
(select count(*) from tblForetag as ti where ty.ort = ti.ort and ti.Foretag = 'Foretag5') AS Foretag5,
(select count(*) from tblForetag as ti where ty.ort = ti.ort and ti.Foretag = 'Foretag6') AS Foretag6,
(select count(*) from tblForetag as ti where ty.ort = ti.ort and ti.Foretag = 'Foretag7') AS Foretag7,
(select count(*) from tblForetag as ti where ty.ort = ti.ort and ti.Foretag = 'Foretag8') AS Foretag8
from tblForetag as ty WHERE Foretag NOT LIKE 'Foretag9%' AND Gren NOT LIKE 'Underforetag%' [B]AND Foretag = 'Foretag1'[/B]
Detta funkade jättebra med både företag1 (AND Foretag = 'Foretag1' ) och Företag2 (AND Foretag LIKE '%Foretag2') men när jag väl kommer till företag3 så funkar det inte alls? Trots att det är nästan exakt samma kod och att det funkade i det första exemplet?
Skriver jag så här så funkar det:
SELECT * From tblForetag WHERE Foretag = 'Foretag3'
Men skriver jag så här så funkar det inte:
SELECT distinct ort,
(select count(*) from tblForetag as ti where ty.ort = ti.ort and ti.Foretag = 'Foretag3') AS Foretag3
FROM tblForetag as ty WHERE Foretag NOT LIKE 'Foretag9%' AND Gren NOT LIKE 'Underforetag%' AND Foretag = 'Foretag3'
Det känns ju som det måste vara knas med datat i databasen men jag kan inte hitta vad eller hur jag ska lösa det? Hoppas verkligen att någon kan hjälpa mig. Jag håller på att bli tokig. :(