webForumDet fria alternativet

Databas, två tabeller

ASP

3 svar · 240 visningar · startad av evesve

Medlem sedan sep. 2001163 inlägg
Frågan#1

Hej!
Jag har 2 tabeller:
"tblDatabas" med kolumnerna personuppgifter, Land, Landskap, Stad, Stadsdel och
"tblEnheter" med uppgifter på Land,Landsnamn, Landskap,Landskapsnamn, Stad,Stadsnamn, Stadsdel,Stadsdelsnamn.
Land, Landskap, Stad, Stadsdel är textkolumner med 01, 02, osv
Jag får fram alla i en viss stadsdel med:

sql = "SELECT DISTINCT * FROM tblDatabas " & _
"LEFT OUTER JOIN tblEnheter " & _
"ON tblDatabas.Land = tblEnheter.Land " & _
"AND tblDatabas.Landskap = tblEnheter.Landskap " & _
"AND tblDatabas.Stad = tblEnheter.stad " & _
"AND tblDatabas.Stadsdel =tblEnheter.stadsdel " & _
"WHERE tblDatabas.Land = '"&land&"' " & _
"AND tblDatabas.Landskap = '"&landskap&"' " & _
"AND tblDatabas.Stad = '"&stad&"' " & _
"AND tblDatabas.Stadsdel = '"&stadsdel&"' " & _
"ORDER BY "&sortera

Så långt är allt bra.
När jag vill se alla i en viss stad (oavsett stadsdel) försöker jag med:

sql = "SELECT DISTINCT * FROM tblDatabas " & _
"LEFT OUTER JOIN tblEnheter " & _
"ON tblDatabas.Land = tblEnheter.Land " & _
"AND tblDatabas.Landskap = tblEnheter.Landskap " & _
"AND tblDatabas.Stad = tblEnheter.stad " & _
"WHERE tblDatabas.Land = '"&land&"' " & _
"AND tblDatabas.Landskap = '"&landskap&"' " & _
"AND tblDatabas.Stad = '"&stad&"' " & _
"ORDER BY "&sortera

Då kommer samma namn upp lika många gånger som det finns stadsdelar.
Ex:
Kalle 01, 01, 04, 01
Kalle 01, 01, 04, 02
Kalle 01, 01, 04, 03
Kalle 01, 01, 04, 04

Hur fixar jag det?

(Access)

Medlem sedan dec. 200012 464 inlägg
#2

Om du låter bli att ta med stadsdel i select-listan och använder distinct så.

Din(?) databasdesign är helt felaktig. Du borde ha separata tabeller för land, landskap, stad och stadsdel.

Medlem sedan sep. 2001163 inlägg
#3

Som du ser på mina två exempel så har jag bort stadsdel i exempel 2.
Det är då jag får felen.
Du har säkert rätt angående olika tabeller, men i min dumma enfald så tyckte jag att detta var enklare.

Medlem sedan dec. 200012 464 inlägg
#4

Jag menar att du inte skall göra select * utan att bara ta de kolumner du vill ha.

select distinct land,landskap,stad from databas left join ...
258 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)