webForumDet fria alternativet

Slå ihop adresser

3 svar · 567 visningar · startad av Jesper T

Jesper TMedlem sedan nov. 20017 144 inlägg
#1

Jag har två tabeller Person och Person_relation

I tabellen Person har jag Namn, postadress, ort osv.

I tabellen Person_relation kopplar jag ihop en person med en annan person.

Nu vill jag göra en "rapport" som spottar ut alla personers adresser men då endast en rad per unik adress. Det går självklart inte att helt sonika gruppera adresserna då två personer kan ha samma postadress som inte har någon koppling till varandra.

Däremot så är risken minimal om jag kollar huruvida de har en koppling i tabellen Person_relation när jag grupperar dem.

Hur skulle en sådan sql se ut?

[B]Person[/B]
id | namn   | postadress   | ort
-----------------------------------
1  | Kalle  | Storgatan 18 | Särna
2  | Åsa    | Vasagatan 2b | Sala
3  | Britta | Åsgatan 3    | Järla
4  | Berit  | Storgatan 18 | Särna

[B]Person_relation[/B]
p1_id | p2_id
---------------
1     |  4

Resultat (Då Berit och Kalle har en relation och har samma adress)
Kalle, Storgatan 18, Särna
Åsa, Vasagatan 2b, Sala
Britta, Åsgatan 3, Järla

LarsGMedlem sedan dec. 200012 464 inlägg
#2
select namn,
       postadress,
       ort
  from person
 where not exists
    (select *
       from person_relation
  where person.id = person_relation.p2_id)
aronMedlem sedan mars 2004485 inlägg
#3

LarsG skrev:

select namn,
       postadress,
       ort
  from person
 where not exists
    (select *
       from person_relation
  where person.id = person_relation.p2_id)

Det där förutsätter ju att alla personer som är i relationer har samma adress, den ena adressen tas bort för alla som är i en relation.

LaspMedlem sedan juli 200012 980 inlägg
#4

>aron Det var ju så TS skrev i sitt exempel!
Återigen har LarsG levererat en härlig lösning :birp :birp :birp :birp

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