FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
Hejsan,
jag har skrivit en sql sats som hämtar data från olika tabeller. vissa matcher förekommer flera gånger (olika providers) i tabellen och de listas flera gånger med min sql sats. Samma match kan även spelas på olika datum. hur ska jag skriva om sql satsen så den listar en enda match ENDAST EN GÅNG, dock vill jag samtidigt ha med alla providers som erbjuder matchen? kolumnerna "team1" och "team2" innehåller matchID i tabellen "event". kolumnen "timeCET" innehåller datumet då matchen spelas. kolumnen "providers" i tabellen "odds" visar vilka providers som erbjuder matchen. Jag vill alltså endast visa matcher som spelas en enda gång samt alla providers som erbjuder matchen. som det ser ut nu så visas vissa matcher flera gånger beroende på hur många providers det finns. min sql sats: Kod:
*SELECT * od.oddsID AS odID, od.odd1 AS odd1, od.oddX AS oddX, od.odd2 AS odd2, ev.eventID, ev.timeCET AS evTimeCET, t1.name AS t1Name, t1.teamID AS t1ID, t2.name AS t2Name, t2.teamID AS t2ID, sp.name AS spName, sp.sportID AS sportID *FROM * odds od *JOIN events ev ON ev.eventID = od.event *JOIN teams t1 ON ev.team1 = t1.teamID *JOIN teams t2 ON ev.team2 = t2.teamID *JOIN sports sp ON ev.sport = sp.sportID *WHERE * sp.name = '".$_REQUEST['sportName']."' *AND * sp.approved = '1'; |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Medlem
|
zilveer>> Om jag inte fattar fel så är det du vill göra logiskt sett helt omöjligt om du tänker efter.
Du vill att matchen ska visas en gång men alla providers till matchen ska visas? Det är inget databasproblem utan ett presentationsproblem. Gör ungefär som du gör (har inte kollat efter exakt), och sortera resultatet efter matchid, och sen får du göra någon loop i programmeringsspråket som reagerar på att matchid ändrar sig från föregående rad. Då är det ju en ny match. Så länge det inte ändrar sig kommer det bara nya providers till samma match. |
||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Mycket flitig postare
|
Hej,
Om du använder MySQL kan du använd en grupperingsklausul och sedan group_concat för att få alla providers till matchen. http://dev.mysql.com/doc/refman/4.1/en/gro...-functions.html |
|||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Medlem
|
Tar tillbaka det där om logiskt omöjligt och skäms lite, använder du group_concat som jimmie skriver så går det ju fint.
Jag menade att om tabellen fortfarande skulle se ut som du hade den nu går det inte, fast det är lätt att lösa i programmeringsspråket i stället. |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Medlem
|
jimmie:
tackar.. jag förstår, mina mysql erfarenheter är sisådär. hur skulle det se ut i mitt fall isåfall? |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Mycket flitig postare
|
Citat:
/Martin |
||
![]() |
![]() |
Svara |
|
|