webForumDet fria alternativet

Hämta företag med specade relationsid:n

Databaser & SQL

2 svar · 348 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Frågan#1

Hejsan!
Har ett vanlig relationsscenario, två tabeller med en relationstabell.
Hur skriver jag för att hämta alla företag som har ex. FilterId 1 och 2?
Med filterid 1 och 2 så ska jag bara få upp 'Mitt företag'.
Väljer jag istället ex. 2 och 3 så ska endast 'Mitt företag 2' komma upp.
Och skulle jag bara välja 2 så ska båda företagen komma upp.
FilterId kommer in som en parameter i en sp.
(Använder sql server 2005)

Companies
_____________________
CompanyId	Company
1			Mitt företag
2			Mitt företag 2

CompaniesFilters
_____________________
CompanyId	FilterId
1			1
1			2
2			2
2			3

Filters
_____________________
FilterId	Filter
1			Mitt filter 1
2			Mitt filter 2
3			Mitt filter 3
Medlem sedan dec. 20025 483 inlägg
#2

Så här kanske:

select c.company
  from companies c
inner
  join companiesfilters cf
    on c.companyid = cf.companyid
inner
  join filters f
    on cf.filterid = f.filterid
 where f.filterid
    in (<filter ids>)
group
    by c.company
having count(*) = <# of filter ids>

Exempel:

select c.company
  from companies c
inner
  join companiesfilters cf
    on c.companyid = cf.companyid
inner
  join filters f
    on cf.filterid = f.filterid
 where f.filterid
    in (2,3)
group
    by c.company
having count(*) = 2
Medlem sedan juni 20003 076 inlägg
#3

Peter S skrev:

Så här kanske:

Inte bara kanske, facit skulle jag vilja påstå! ;)
Du e en klippa Peter! :bire

250 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)