ArneWilly Skrevet 9. februar 2009 Del Skrevet 9. februar 2009 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
ArneWilly Skrevet 9. februar 2009 Forfatter Del Skrevet 9. februar 2009 (endret) 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 9. februar 2009 av ArneWilly Lenke til kommentar
siDDis Skrevet 9. februar 2009 Del Skrevet 9. februar 2009 Synes du fortjener ein ny utfordring når du har vært så flink Skriv same spørring med INNER JOIN Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå