Avatar billede mac10 Nybegynder
12. januar 2009 - 21:18 Der er 6 kommentarer og
1 løsning

Hentra fra flere MySQL tabeller. Uoverskueligt

Hej

Jeg er ikke den bedste PHP haj og har derfor brug for noget hjælp til noget kode. Jeg er bekendt med INNER JOIN og LEFT JOIN, men er ikke så hård til det når det bliver hardcore kodning.

Jeg har følgende.

Brugere
- id
- navn
- billede

Kategori
- id
- navn
- brugere

I kategori kan der f.eks. stå følgende:

id: 1
navn: kategori
brugere: 1,4,7,9

I "brugere" rækken i tabellen kategori vil der stå ID'er på nogle brugere jeg vil have vist i den kategori, samt deres navn og billede, men ved ikke hvordan jeg skal gøre det? :S

Nogle hajer der er gode til at svømme?
Avatar billede jakobdo Ekspert
12. januar 2009 - 21:26 #1
Inden du arbejder videre med din tabeller, så skal du lave en ændring.
Fjern feltet brugere fra kategori og lav en ny tabel og kald den f.eks.:

brugere_kategori
Den skal indeholde felterne:
bruger_id
kategori_id
Du kan lave dem samme datatype som du bruger i brugere og kategori, samt gøre dem til en fælles primær nøgle.

Når du så vil lave noget ala
id: 1
navn: kategori
brugere: 1,4,7,9

Så indsætter du:

Række 1
bruger_id = 1
kategori_id = (det som svarer til kategori)

Række 2
bruger_id = 4
kategori_id = (det som svarer til kategori)

Række 3
bruger_id = 7
kategori_id = (det som svarer til kategori)

og

Række 4
bruger_id = 9
kategori_id = (det som svarer til kategori)

Det er den mest korrekte måde at lave det på.
Avatar billede jakobdo Ekspert
12. januar 2009 - 21:28 #2
Og når du så vi lave udtræk med deres navn, billede og kategori, så bruger du:

SELECT
b.navn,
b.billede,
k.navn
FROM brugere b
INNER JOIN brugere_kategori bg
ON b.id = bg.bruger_id
INNER JOIN kategori k
ON bg.kategori_id = k.id
Avatar billede mac10 Nybegynder
12. januar 2009 - 21:40 #3
Det virker - sådan da :)

Den hiver bare alle resultaterne ud to gange. Det forstår jeg ikke lige?
Avatar billede mac10 Nybegynder
12. januar 2009 - 22:02 #4
Der manglede lige en GROUP BY på bg.bruger_id :)

Lav svar
Avatar billede jakobdo Ekspert
13. januar 2009 - 08:18 #5
Hvis en bruger har flere kategorier, så vil der komme flere rækker ud.
Avatar billede jakobdo Ekspert
13. januar 2009 - 08:19 #6
Di får et svar.
Avatar billede jakobdo Ekspert
28. september 2009 - 13:24 #7
Takker for point.
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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

IT-JOB