Kom ihåg mig?
Home Menu

Menu


sql-fråge problem

Ämnesverktyg Visningsalternativ
Oläst 2006-09-21, 19:24 #1
zilveer zilveer är inte uppkopplad
Medlem
 
Reg.datum: Jun 2006
Inlägg: 128
zilveer zilveer är inte uppkopplad
Medlem
 
Reg.datum: Jun 2006
Inlägg: 128
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';
tacksam för vägledning
zilveer är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-09-22, 09:40 #2
mersault mersault är inte uppkopplad
Medlem
 
Reg.datum: Apr 2006
Inlägg: 119
mersault mersault är inte uppkopplad
Medlem
 
Reg.datum: Apr 2006
Inlägg: 119
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.
mersault är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-09-22, 10:04 #3
jimmies avatar
jimmie jimmie är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 751
jimmie jimmie är inte uppkopplad
Mycket flitig postare
jimmies avatar
 
Reg.datum: Oct 2004
Inlägg: 751
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
jimmie är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-09-22, 10:13 #4
mersault mersault är inte uppkopplad
Medlem
 
Reg.datum: Apr 2006
Inlägg: 119
mersault mersault är inte uppkopplad
Medlem
 
Reg.datum: Apr 2006
Inlägg: 119
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.
mersault är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-09-22, 13:45 #5
zilveer zilveer är inte uppkopplad
Medlem
 
Reg.datum: Jun 2006
Inlägg: 128
zilveer zilveer är inte uppkopplad
Medlem
 
Reg.datum: Jun 2006
Inlägg: 128
jimmie:

tackar..
jag förstår, mina mysql erfarenheter är sisådär.
hur skulle det se ut i mitt fall isåfall?
zilveer är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-09-22, 17:08 #6
nomicon nomicon är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Aug 2003
Inlägg: 753
nomicon nomicon är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Aug 2003
Inlägg: 753
Citat:
Originally posted by mersault@Sep 22 2006, 10:13
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.
Det är aldrig rätt att lösa designproblem av databasen med scriptspråk. Designa databasen och relationerna korrekt istället.

/Martin
nomicon är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 20:41.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017