webForumDet fria alternativet

Hjälp med Query

Databaser & SQL

2 svar · 743 visningar · startad av room

Medlem sedan mars 2001270 inlägg
Frågan#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.

Medlem 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)

Medlem sedan juni 200032 967 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.

257 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)