webForumDet fria alternativet

Hjälp med Query

2 svar · 741 visningar · startad av room

roomMedlem sedan mars 2001270 inlägg
#1

Hej. Jag skulle behöva hjälp med en QUERY för följande.

Jag har två tabeller:

foretag:

ID | foretag  | lan
1  | foretag1 | VARMLAND
2  | foretag2 | VARMLAND, DALARNA
3  | foretag3 | DALARNA, OREBRO
... osv

angransande:

mast       | angransande
VARMLAND   | DALARNA, OREBRO, VAST, SKARABORG
DALARNA    | OSTERSUND, HALSINGLAND, VARMLAND,
... osv

Jag får av klienten ett klick på t ex VARMLAND och då vill jag plocka ut alla Företag som har VARMLAND som Län SAMT alla företag som har DALARNA, OREBRO, VAST eller SKARABORG som Län.

Någon som vet hur jag skall formulera denna query?

Tacksam för svar.

adde2Medlem sedan maj 2000144 inlägg
#2

Du ska inte fundera på att splitta upp tabellerna så att du endast har ett län per rad?
Blir väldigt mycket enklare då.

Ex:
Företag:
Namn län
----------------
Företag1 | län1
Företag1 | län2
Företag2 | län1

Angränsande län
Län Granne
--------------
Län1 | Län2
Län1 | Län3
Län2 | Län1
Län2 | Län4

select F.* from län L
inner join Företag f on L.Län = f.län
where L.Län = 'Skaraborg'
union
select F.* from Län L
inner join Företag F on L.Granne = F.Län
where L.Län = 'Skaraborg'

Ännu snyggare är så klart att dela upp det i 3-4 tabeller för att minska redundans och uttrycka m-n relationer så som man fick lära sig i skolan :-)
Beror lite på hur dina tabeller ser ut (vilket som är lämpligast)

@ndersMedlem sedan juni 200032 969 inlägg
#3

adde2 skrev:

Du ska inte fundera på att splitta upp tabellerna så att du endast har ett län per rad?

Jo, det ska han. Man får inte spara flera värden i samma fält.

136 ms totalt · 3 externa anrop · v20260731065814-full.30151723
133 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)