Avatar billede mjansen Seniormester
03. juni 2016 - 14:46 Der er 2 kommentarer og
1 løsning

Hvordan bruger jeg JOIN

Hej

Tabel a:
id - navn
1 - bent
2 - anders
3 - kim

Tabel b:
id - a_id - beskrivelse
1 - 1 - gammel
2 - 1 - høj
3 - 2 - ung
4 - 3 - lav

Det jeg laver nu er:
SELECT navn, beskrvelse FROM a LEFT JOIN b on a.id = b.a_id

Resultat er 4 linier hvor bent har 2 beskrivelser, men hvis jeg kun vil have bent 1 gang, uden brug af GROUP BY hvordan gør man så det?

Vil gerne undgå GROUP BY da jeg har nogle sorteringer at tage hensyn til som jeg tidligere har haft problemer med.
Avatar billede olsensweb.dk Ekspert
03. juni 2016 - 15:16 #1
har du ikke redundant data i beskrivelse ??

Tabel a:
id - navn
1 - bent
2 - anders
3 - kim

// mapnings tabel AC
Tabel b:
id - a_id - c_id
1 - 1 - 1
2 - 1 - 2
3 - 2 - 3
4 - 3 - 4
5 - 3 - 1

her er bent gammel og høj
her er kim  gammel og lav 


Tabel c:
id - beskrivelse
1 - gammel
2 - høj
3 - ung
4 - lav
Avatar billede arne_v Ekspert
03. juni 2016 - 15:16 #2
Typisk vil man lave SQL som du goer og lade applikationen kun udskrive en linie med en konkatanering af alle beskrivelser.

Hvis du er villig til bare at tage en tilfaeldig beskrivelse (men det lyder urealistisk at det er godt nok) saa er GROUP BY og f.eks. MAX en mulig loesning.
Avatar billede arne_v Ekspert
03. juni 2016 - 15:20 #3
Ups. Saa lige at det er MySQL. Saa er du heldig - der er en speciel funktion som nok kan hjaelpe dig:

http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester