[MySQL] Sorteren mbv andere tabel

Pagina: 1
Acties:

  • RubenDJ
  • Registratie: Februari 2000
  • Laatst online: 20:29
Ik heb 2 tabellen:

1 met uitslagen van sportwedstrijden en een tabel met klassen die ook aangeeft wat de volgorde moet zijn van hoe de sportwedstrijden getoond moeten worden:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE TABLE wedstrijden (
  id int(11) NOT NULL auto_increment,
  klasse varchar(4) NOT NULL default '',
  wedstrijdnummer varchar(5) NOT NULL default '0',
  datum date NOT NULL default '0000-00-00',
  tijd time NOT NULL default '00:00:00',
  thuisclub tinytext NOT NULL,
  uitclub tinytext NOT NULL,
  uitslag tinytext NOT NULL,
  PRIMARY KEY  (id)
)

CREATE TABLE klasse_volgorde (
  id tinyint(4) NOT NULL auto_increment,
  plaats tinyint(4) NOT NULL default '0',
  klasse tinytext NOT NULL,
  PRIMARY KEY  (id)
)

Nu had ik dus gedacht ;) dat ik gemakkelijk de wedstrijden zou op de goede volgorde zou kunnen tonen met behulp van de volgende query:
code:
1
2
3
4
5
SELECT DISTINCT thuisclub, uitclub, uitslag 
FROM wedstrijden, klasse_volgorde 
WHERE datum = '$datum' 
ORDER BY wedstrijden_klasse_volgorde.plaats,
       wedstrijden_klasse_volgorde.klasse DESC

Dit toont wel de gesorteerde resultaten, maar wel het aantal keer dat er een klasse in de volgorde tabel staat. Dus bij 7 klassen laat hij alle wedstrijden 7 keer zien.

Wie weet hoe ik mijn query zó aan kan passen dat ie de wedstrijden slechts één keer toont? :?

specs


  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 23:45
Kijk eens naar die ander MySQl topic momenteel [topic=394630]. dit is nl ook hetzelfde probleem, doordat MySQL niet weet hoe de tabellen aan elkaal gekoppeld moeten worden.

Verwijderd

Ik snap helemaal niets van je datamodel. Wat leg je nou eigenlijk vast in de tabel volgorde? Hoe zijn die gegevens gerelateerd aan je wedstrijdtabel? Zou je niet gewoon die kolommen overmoeten nemen in je wedstrijdtabel, omdat het een 1 op 1 relatie is>?

:?

  • RubenDJ
  • Registratie: Februari 2000
  • Laatst online: 20:29
Ik ben eruit (met grote dank aan meneer freak007 ;)). Ik moest inderdaad INNER JOIN gebruiken om de tabellen op een goede manier aan elkaar te koppelen.

De query is hierdoor als volgt geworden:
code:
1
2
3
4
5
6
SELECT DISTINCT thuisclub, uitclub, uitslag 
FROM wedstrijden
INNER JOIN wedstrijden_klasse_volgorde 
ON wedstrijden_klasse_volgorde.klasse = wedstrijden.klasse
WHERE datum = '$datum' 
ORDER BY wedstrijden_klasse_volgorde.plaats ASC
Op maandag 28 januari 2002 22:53 schreef MrX het volgende:
Ik snap helemaal niets van je datamodel. Wat leg je nou eigenlijk vast in de tabel volgorde? Hoe zijn die gegevens gerelateerd aan je wedstrijdtabel? Zou je niet gewoon die kolommen overmoeten nemen in je wedstrijdtabel, omdat het een 1 op 1 relatie is>?

:?
Neem even van mij aan dat het geen 1 op 1 relatie is, dit is slechts een vereenvoudigde weergave van mijn tabellen. Het is niet echt relevant om uit de doeken te doen hoe het precies in elkaar steekt. Ik ben absoluut geen n00b op databasegebied, ik wist alleen niet welke SQL clausule ik moest gebruiken.

specs


  • tomato
  • Registratie: November 1999
  • Niet online
Een TINYTEXT joinen op een VARCHAR! Dat dat uberhaupt kan :o

  • tomato
  • Registratie: November 1999
  • Niet online
RubenDJ: Neem even van mij aan dat het geen 1 op 1 relatie is, dit is slechts een vereenvoudigde weergave van mijn tabellen. Het is niet echt relevant om uit de doeken te doen hoe het precies in elkaar steekt. Ik ben absoluut geen n00b op databasegebied, ik wist alleen niet welke SQL clausule ik moest gebruiken.
:D
Neem dan van mij (absoluut wel n00b op databasegebied natuurlijk) aan dat zelfs een absolute niet-n00b op databasegebied als jij misschien nog iets kunt leren. Maar ja, wat zou MrX je hier nou bij kunnen helpen... :z

  • RubenDJ
  • Registratie: Februari 2000
  • Laatst online: 20:29
Inderdaad een slordigheidje :D. Gelukkig doet MySQL niet moeilijk over het vergelijken van datatypes. Zal het toch maar even aanpassen ;). Bedankt!

specs

Pagina: 1