Gå til innhold

MySQL - Litt småavansert spørring


Anbefalte innlegg

Heisann,

jeg har møtt på en liten utfordring som jeg ikke klarer å vri hodet mitt rundt.

 

 

Det er snakk om tre aktuelle tabeller (nøkkelattributter er understreket):

Games

(GameID, Title, ...)

 

Games_and_genres

(GameID, GenreID)

 

Games_genres

(GenreID, Name)

 

 

Beskrivelse av problemet:

La oss si at jeg ønsker å hente ut alle spill hvor sjanger-id'en er 5 eller 1. I tillegg til infomasjon om spillet, som tittel etc., ønsker jeg alle tilhørende sjangre. Problemet mitt er at når jeg spesifiserer en sjanger-id, så vil ikke de andre sjangrene som tilhører spillet bli skrevet ut.

 

 

Veldig konkret eksempel:

Crysis har sjangre med id: 1, 5, 7.

 

Jeg henter ut alle spill med sjanger-id 5.

 

Dette skjer: Crysis blir printet ut med sjanger-id 5.

Ønsket resultat: Crysis blir printet ut med sjanger-id 1, 5, og 7.

 

 

Koden min så langt:

SELECT games.gameid, games.title, GROUP_CONCAT(DISTINCT games_genres.name)
FROM games, games_and_genres, games_genres

WHERE 
games_genres.genreid = games_and_genres.genreid
AND games_and_genres.gameid=games.gameid
AND ((games_and_genres.genreid = 2) OR (games_and_genres.genreid = 5))

GROUP BY Games.GameID

 

 

Her trengs det noen tips og triks. All hjelp mottas med en stor takk :)

Lenke til kommentar
Videoannonse
Annonse

Vel, da ble problemet løst :)

 

For de som måtte være interesserte, var løsningen å innføre alias.

 

Her er koden som burde fungere:

 

SELECT games.gameid, games.title, GROUP_CONCAT(DISTINCT games_genres.name)
FROM games, games_and_genres AS g1, games_and_genres AS g2, games_genres

WHERE (g1.gameid = g2.gameid)
AND (games_genres.genreid = g1.genreid)
AND (g1.gameid=games.gameid)
AND ((g2.genreid = 2) OR (g2.genreid = 5))

GROUP BY Games.GameID

Endret av ArneWilly
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...