Hulp nodig bij query
Scroll naar beneden voor het nieuwe probleem met dezelfde databaseopbouw
Ik ben mijn site wat aan het uitbreiden en om te beginnen moet ik een goed database model hebben. Ik kom zelf op het volgende uit maar misschien kijk ik wel helemaal verkeerd en vergeet ik bepaalde dingen. Zouden jullie kunnen kijken of ik zo goed zit qua database opbouw of dat jullie suggesties hebben.
Het is voor een website van 1 club. De wedstrijden zullen dus altijd door in ieder geval die club gespeeld worden.
Wedstrijden
plaats (thuis/uit)
tegenstander_id
doelpunten --> is het sneller om ze mee te geven hier of om ze te tellen vanuit de tabel met goals
doelpuntentegenstander --> zie bovenstaande
kaarten --> net als bij de goals
kaartentegenstander
soort_id
seizoen_id
datum/tijd
scheidsrechter_id
stadion_id
toeschouwersaantal
Soort wedstrijd
id
naam
Seizoen
id
jaar
scheidsrechters
id
naam
nationaliteit
Stadion
id
naam
plaats
capaciteit
foto
Goals
id
speler_id
minuut
Kaarten
id
speler_id
minuut
kleur
Spelers
id
naam
rugnr
foto
geboortedatum
geboorteplaats
nationaliteit
Clubs
id
naam
logo
Dit is waar ik op uit kwam. Met name in de tabel wedstrijden zit ik nog met wat dingetjes. Ik wil namelijk niet registreren wie een kaart heeft gekregen bij de tegenstander omdat dit niet relevant is voor mijn site. Hetzelfde met de goals van de tegenstander.
Mijn vraag is dus (voor zover nog niet duidelijk) of jullie ook tips/opmerkingen hebben voor de databaseopbouw.
Alvast bedankt voor het kijken.
Gewijzigd op 01/01/1970 01:00:00 door Remco
remco schreef op 06.03.2009 14:35:
Beste PHP'ers
Wedstrijden
plaats (thuis/uit)
tegenstander_id
doelpunten --> is het sneller om ze mee te geven hier of om ze te tellen vanuit de tabel met goals <--direct vanuit de andere tabel doen
doelpuntentegenstander --> zie bovenstaande
kaarten --> net als bij de goals
kaartentegenstander
soort_id
seizoen_id
datum/tijd
scheidsrechter_id
stadion_id
toeschouwersaantal
Soort wedstrijd
id
naam
Seizoen
id
jaar
scheidsrechters
id
naam
nationaliteit
Stadion
id
naam
plaats
capaciteit
foto
Goals
id
speler_id
minuut
wedstrijd_id
Kaarten
id
speler_id
minuut
kleur
Spelers
id
naam
rugnr
foto
geboortedatum
geboorteplaats
nationaliteit
club
Clubs
id
naam
logo
Wedstrijden
plaats (thuis/uit)
tegenstander_id
soort_id
seizoen_id
datum/tijd
scheidsrechter_id
stadion_id
toeschouwersaantal
Soort wedstrijd
id
naam
Seizoen
id
jaar
scheidsrechters
id
naam
nationaliteit
Stadion
id
naam
plaats
capaciteit
foto
Goals
id
speler_id
minuut
wedstrijd_id
Kaarten
id
speler_id
minuut
kleur
Spelers
id
naam
rugnr
foto
geboortedatum
geboorteplaats
nationaliteit
club
Clubs
id
naam
logo
Ik zou ook gewoon de spelers van de tegenpartij bijhouden, of desnoods een aparte speler genaamd tegenstander maken, maar dat is niet echt geweldig
doorgestreept=niet doen
onderstreept=toevoegen
Gewijzigd op 01/01/1970 01:00:00 door TJVB tvb
- Kolommen uit wedstrijden tabel waar jij nu over twijfelt mag je er gewoon uithalen. Dat zijn berekende aantallen en die volgen uit de gegevens uit andere tabellen.
- In de goals en kaarten tabellen mis ik een koppeling naar de wedstrijden tabel. Een FK naar het wedstrijd_id is hier wel nodig om te bepalen in welke wedstrijd de goals gevallen of kaarten gegeven zijn.
- In de spelers tabel mis ik de koppeling naar de clubs tabel. Een FK naar het club_id is nodig om vast te leggen van welke club een speler is. Eventueel zou je dit ook via een koppeltabel (inclusief begin en einddatum van contract) kunnen doen om zo een historie van een bepaalde speler bij te houden.
Let er verder op dat je voor alle kolommen de juiste datatypen gebruikt. Wellicht dat je dat al doet, maar ik zie het maar wat vaak fout gaan.
id_thuisploeg
id_uitploeg
Zo weet je direct wie tegen wie speelt en wie er thuis speelt en wie er uit speelt. De plaats lijkt mij aan een stadion gebonden, een stadion ligt niet in plaats X en de wedstrijd wordt in plaats Y gespeeld. Foutje?
Wie tegen wie speelt is wel duidelijk. Ik houd namelijk alleen de wedstrijden van Heerenveen bij. Aangezien ik door het aangeven van (plaats(thuis/uit)) weet wie er thuis of uit speelt is het wel duidelijk wie tegen wie speelt.
Quote:
Zo weet je direct wie tegen wie speelt en wie er thuis speelt en wie er uit speelt. De plaats lijkt mij aan een stadion gebonden, een stadion ligt niet in plaats X en de wedstrijd wordt in plaats Y gespeeld. Foutje?
Als ik het goed begrijp bedoel je de bovenste plaats? Daar geef ik alleen aan of het thuis of uit is omdat 1 club altijd hetzelfde is.
Een uit of thuiswedstrijd kan in bijv de bekerfinale in een neutraal stadion worden gespeeld dus uit of thuis bepaalt nog niet direct de plaats van de wedstrijd.
@Blance & TJVB
Ik zie nu ook dat ik bij de goals de rij met wedstrijd_id ben vergeten wat ik overigens ook ben vergeten bij kaarten (zie ik nu)
In mijn model hoeft volgens mij geen club bij de spelers omdat de spelers in mijn tabel maar van 1 club kunnen zijn (ik houd namelijk alleen de spelers van 1 club bij)
Ik denk dat ik, ondanks dat het niet erg netjes is, misschien dan toch een record moet maken met spelernaam tegenstander omdat het niet te doen is om alle spelers van alle tegenstanders toe te voegen.
Als ik een dus een speler genaamd tegenstander toevoeg kan ik inderdaad de 4 rijen laten vervallen.
Verder nog dingen of klopt het verder zo wel ongeveer
Quote:
Tot het moment dat je dit verandert... En dat moment zal niet lang op zich laten wachten, meestal gebeurt zoiets al voordat je helemaal klaar bent met je systeem. Een vriend, broer, zus of iemand anders vraagt of je de wedstrijden van club X wilt bijhouden en je bent de klos. Dit is nu nog heel erg simpel in te bouwen, dat is het straks niet meer. Doe jezelf een plezier en voer dat ene extra veldje even in. Meer is het niet.Wie tegen wie speelt is wel duidelijk. Ik houd namelijk alleen de wedstrijden van Heerenveen bij.
En wanneer je gaat normaliseren, ga dan goed en volledig normaliseren en gooi niet halverwege het bijltje erbij neer omdat je denkt dat het toch nooit meer verandert. Daar zou je nog flinke spijt van kunnen krijgen.
Wedstrijden
thuisclub_id
uitclub_id
soort_id
seizoen_id
datum/tijd
scheidsrechter_id
stadion_id
toeschouwersaantal
Soort wedstrijd
id
naam
Seizoen
id
jaar
scheidsrechters
id
naam
nationaliteit
Stadion
id
naam
plaats
capaciteit
foto
Goals
id
speler_id
minuut
wedstrijd_id
Kaarten
id
speler_id
minuut
kleur
Spelers
id
naam
rugnr
foto
geboortedatum
geboorteplaats
nationaliteit
club
Clubs
id
naam
logo
Klopt het zo al beter? Als ik 1 keer de juiste tabellen heb ga ik kijken naar de eigenschappen van de kolommen (INT, BIGINT etc...)
Kaarten mist nog het id van de speler. Verder kom je nu nog in de problemen als je meerdere teams van 1 club in je competitie hebt. Ik weet niet of het voorkomt, maar eigenlijk hoor je nog een tabel met teams en de bijbehorende koppelingen op te nemen.
Het zal niet voorkomen dat meerdere teams van 1 club in de competitie zitten. Alles is bedoeld voor maar een club en eigenlijk ook direct 1 team. Het enige wat voor zou kunnen komen is een beker ontmoeting tussen Heerenveen en jong Heerenveen maar dat zijn al 2 verschillende club namen. De kans dat dit overigens gebeurt is heel heel heel erg klein.
Als je er 100% zeker van bent dat het nooit gebeurt (stel dat je een applicatie voor bijvoorbeeld de eredivisie zou maken), dan kun je je zo'n opzet veroorloven. Maar in alle andere gevallen zul je er toch zeker rekening mee houden dat je je applicatie anders wilt gebruiken dan dat je nu voor ogen hebt...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'clubs'
--
CREATE TABLE clubs (
id int(9) unsigned NOT NULL auto_increment,
naam varchar(40) NOT NULL,
logo varchar(50) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'goals'
--
CREATE TABLE goals (
id int(9) unsigned NOT NULL auto_increment,
speler_id int(9) unsigned NOT NULL,
wedstr_id int(9) unsigned NOT NULL,
minuut int(3) unsigned NOT NULL,
PRIMARY KEY (id),
KEY speler (speler_id),
KEY wedstrijd (wedstr_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'kaarten'
--
CREATE TABLE kaarten (
id int(9) unsigned NOT NULL auto_increment,
speler_id int(9) unsigned NOT NULL,
wedstr_id int(9) unsigned NOT NULL,
kleur_id int(1) unsigned NOT NULL,
minuut int(3) unsigned NOT NULL,
PRIMARY KEY (id),
KEY speler (speler_id),
KEY wedstrijd (wedstr_id),
KEY kleur (kleur_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'nationaliteit'
--
CREATE TABLE nationaliteit (
id int(4) unsigned NOT NULL auto_increment,
nationaliteit varchar(40) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'scheidsrechters'
--
CREATE TABLE scheidsrechters (
id int(4) unsigned NOT NULL auto_increment,
naam varchar(60) NOT NULL,
nationaliteit_id int(4) unsigned NOT NULL,
PRIMARY KEY (id),
KEY nationaliteit (nationaliteit_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'seizoen'
--
CREATE TABLE seizoen (
id int(4) unsigned NOT NULL auto_increment,
jaar char(9) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'selectie'
--
CREATE TABLE selectie (
id int(9) unsigned NOT NULL auto_increment,
seizoen_id int(4) unsigned NOT NULL,
speler_id int(9) unsigned NOT NULL,
PRIMARY KEY (id),
KEY seizoen (seizoen_id),
KEY speler (speler_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'soort_kaart'
--
CREATE TABLE soort_kaart (
id int(1) unsigned NOT NULL auto_increment,
kleur varchar(10) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'soort_wedstr'
--
CREATE TABLE soort_wedstr (
id int(2) unsigned NOT NULL auto_increment,
naam varchar(30) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'spelers'
--
CREATE TABLE spelers (
id int(9) unsigned NOT NULL auto_increment,
naam varchar(60) NOT NULL,
rugnummer int(2) unsigned NOT NULL,
foto varchar(60) NOT NULL,
geb_datum date NOT NULL,
geb_plaats varchar(50) NOT NULL,
nationaliteit_id int(4) unsigned NOT NULL,
PRIMARY KEY (id),
KEY nationaliteit (nationaliteit_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'stadion'
--
CREATE TABLE stadion (
id int(4) unsigned NOT NULL auto_increment,
naam varchar(40) NOT NULL,
plaats varchar(40) NOT NULL,
capaciteit int(5) unsigned NOT NULL,
foto varchar(50) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'wedstrijden'
--
CREATE TABLE wedstrijden (
id int(9) unsigned NOT NULL auto_increment,
thuis_id int(4) unsigned NOT NULL,
uit_id int(4) unsigned NOT NULL,
datum datetime NOT NULL,
seizoen_id int(4) unsigned NOT NULL,
soort_id int(2) unsigned NOT NULL,
scheids_id int(4) unsigned NOT NULL,
stadion_id int(4) unsigned NOT NULL,
toeschouwers int(5) unsigned NOT NULL,
PRIMARY KEY (id),
KEY thuis (thuis_id),
KEY uit (uit_id),
KEY seizoen (seizoen_id),
KEY soort (soort_id),
KEY scheidsrechter (scheids_id),
KEY stadion (stadion_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Beperkingen voor gedumpte tabellen
--
--
-- Beperkingen voor tabel `goals`
--
ALTER TABLE `goals`
ADD CONSTRAINT goals_ibfk_2 FOREIGN KEY (wedstr_id) REFERENCES wedstrijden (id) ON UPDATE CASCADE,
ADD CONSTRAINT goals_ibfk_1 FOREIGN KEY (speler_id) REFERENCES spelers (id) ON UPDATE CASCADE;
--
-- Beperkingen voor tabel `kaarten`
--
ALTER TABLE `kaarten`
ADD CONSTRAINT kaarten_ibfk_3 FOREIGN KEY (kleur_id) REFERENCES soort_kaart (id) ON UPDATE CASCADE,
ADD CONSTRAINT kaarten_ibfk_1 FOREIGN KEY (speler_id) REFERENCES spelers (id) ON UPDATE CASCADE,
ADD CONSTRAINT kaarten_ibfk_2 FOREIGN KEY (wedstr_id) REFERENCES wedstrijden (id) ON UPDATE CASCADE;
--
-- Beperkingen voor tabel `scheidsrechters`
--
ALTER TABLE `scheidsrechters`
ADD CONSTRAINT scheidsrechters_ibfk_1 FOREIGN KEY (nationaliteit_id) REFERENCES nationaliteit (id) ON UPDATE CASCADE;
--
-- Beperkingen voor tabel `selectie`
--
ALTER TABLE `selectie`
ADD CONSTRAINT selectie_ibfk_2 FOREIGN KEY (speler_id) REFERENCES spelers (id) ON UPDATE CASCADE,
ADD CONSTRAINT selectie_ibfk_1 FOREIGN KEY (seizoen_id) REFERENCES seizoen (id) ON UPDATE CASCADE;
--
-- Beperkingen voor tabel `spelers`
--
ALTER TABLE `spelers`
ADD CONSTRAINT spelers_ibfk_1 FOREIGN KEY (nationaliteit_id) REFERENCES nationaliteit (id) ON UPDATE CASCADE;
--
-- Beperkingen voor tabel `wedstrijden`
--
ALTER TABLE `wedstrijden`
ADD CONSTRAINT wedstrijden_ibfk_6 FOREIGN KEY (stadion_id) REFERENCES stadion (id) ON UPDATE CASCADE,
ADD CONSTRAINT wedstrijden_ibfk_1 FOREIGN KEY (thuis_id) REFERENCES clubs (id) ON UPDATE CASCADE,
ADD CONSTRAINT wedstrijden_ibfk_2 FOREIGN KEY (uit_id) REFERENCES clubs (id) ON UPDATE CASCADE,
ADD CONSTRAINT wedstrijden_ibfk_3 FOREIGN KEY (seizoen_id) REFERENCES seizoen (id) ON UPDATE CASCADE,
ADD CONSTRAINT wedstrijden_ibfk_4 FOREIGN KEY (soort_id) REFERENCES soort_wedstr (id) ON UPDATE CASCADE,
ADD CONSTRAINT wedstrijden_ibfk_5 FOREIGN KEY (scheids_id) REFERENCES scheidsrechters (id) ON UPDATE CASCADE;
--
-- Tabel structuur voor tabel 'clubs'
--
CREATE TABLE clubs (
id int(9) unsigned NOT NULL auto_increment,
naam varchar(40) NOT NULL,
logo varchar(50) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'goals'
--
CREATE TABLE goals (
id int(9) unsigned NOT NULL auto_increment,
speler_id int(9) unsigned NOT NULL,
wedstr_id int(9) unsigned NOT NULL,
minuut int(3) unsigned NOT NULL,
PRIMARY KEY (id),
KEY speler (speler_id),
KEY wedstrijd (wedstr_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'kaarten'
--
CREATE TABLE kaarten (
id int(9) unsigned NOT NULL auto_increment,
speler_id int(9) unsigned NOT NULL,
wedstr_id int(9) unsigned NOT NULL,
kleur_id int(1) unsigned NOT NULL,
minuut int(3) unsigned NOT NULL,
PRIMARY KEY (id),
KEY speler (speler_id),
KEY wedstrijd (wedstr_id),
KEY kleur (kleur_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'nationaliteit'
--
CREATE TABLE nationaliteit (
id int(4) unsigned NOT NULL auto_increment,
nationaliteit varchar(40) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'scheidsrechters'
--
CREATE TABLE scheidsrechters (
id int(4) unsigned NOT NULL auto_increment,
naam varchar(60) NOT NULL,
nationaliteit_id int(4) unsigned NOT NULL,
PRIMARY KEY (id),
KEY nationaliteit (nationaliteit_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'seizoen'
--
CREATE TABLE seizoen (
id int(4) unsigned NOT NULL auto_increment,
jaar char(9) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'selectie'
--
CREATE TABLE selectie (
id int(9) unsigned NOT NULL auto_increment,
seizoen_id int(4) unsigned NOT NULL,
speler_id int(9) unsigned NOT NULL,
PRIMARY KEY (id),
KEY seizoen (seizoen_id),
KEY speler (speler_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'soort_kaart'
--
CREATE TABLE soort_kaart (
id int(1) unsigned NOT NULL auto_increment,
kleur varchar(10) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'soort_wedstr'
--
CREATE TABLE soort_wedstr (
id int(2) unsigned NOT NULL auto_increment,
naam varchar(30) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'spelers'
--
CREATE TABLE spelers (
id int(9) unsigned NOT NULL auto_increment,
naam varchar(60) NOT NULL,
rugnummer int(2) unsigned NOT NULL,
foto varchar(60) NOT NULL,
geb_datum date NOT NULL,
geb_plaats varchar(50) NOT NULL,
nationaliteit_id int(4) unsigned NOT NULL,
PRIMARY KEY (id),
KEY nationaliteit (nationaliteit_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'stadion'
--
CREATE TABLE stadion (
id int(4) unsigned NOT NULL auto_increment,
naam varchar(40) NOT NULL,
plaats varchar(40) NOT NULL,
capaciteit int(5) unsigned NOT NULL,
foto varchar(50) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel 'wedstrijden'
--
CREATE TABLE wedstrijden (
id int(9) unsigned NOT NULL auto_increment,
thuis_id int(4) unsigned NOT NULL,
uit_id int(4) unsigned NOT NULL,
datum datetime NOT NULL,
seizoen_id int(4) unsigned NOT NULL,
soort_id int(2) unsigned NOT NULL,
scheids_id int(4) unsigned NOT NULL,
stadion_id int(4) unsigned NOT NULL,
toeschouwers int(5) unsigned NOT NULL,
PRIMARY KEY (id),
KEY thuis (thuis_id),
KEY uit (uit_id),
KEY seizoen (seizoen_id),
KEY soort (soort_id),
KEY scheidsrechter (scheids_id),
KEY stadion (stadion_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Beperkingen voor gedumpte tabellen
--
--
-- Beperkingen voor tabel `goals`
--
ALTER TABLE `goals`
ADD CONSTRAINT goals_ibfk_2 FOREIGN KEY (wedstr_id) REFERENCES wedstrijden (id) ON UPDATE CASCADE,
ADD CONSTRAINT goals_ibfk_1 FOREIGN KEY (speler_id) REFERENCES spelers (id) ON UPDATE CASCADE;
--
-- Beperkingen voor tabel `kaarten`
--
ALTER TABLE `kaarten`
ADD CONSTRAINT kaarten_ibfk_3 FOREIGN KEY (kleur_id) REFERENCES soort_kaart (id) ON UPDATE CASCADE,
ADD CONSTRAINT kaarten_ibfk_1 FOREIGN KEY (speler_id) REFERENCES spelers (id) ON UPDATE CASCADE,
ADD CONSTRAINT kaarten_ibfk_2 FOREIGN KEY (wedstr_id) REFERENCES wedstrijden (id) ON UPDATE CASCADE;
--
-- Beperkingen voor tabel `scheidsrechters`
--
ALTER TABLE `scheidsrechters`
ADD CONSTRAINT scheidsrechters_ibfk_1 FOREIGN KEY (nationaliteit_id) REFERENCES nationaliteit (id) ON UPDATE CASCADE;
--
-- Beperkingen voor tabel `selectie`
--
ALTER TABLE `selectie`
ADD CONSTRAINT selectie_ibfk_2 FOREIGN KEY (speler_id) REFERENCES spelers (id) ON UPDATE CASCADE,
ADD CONSTRAINT selectie_ibfk_1 FOREIGN KEY (seizoen_id) REFERENCES seizoen (id) ON UPDATE CASCADE;
--
-- Beperkingen voor tabel `spelers`
--
ALTER TABLE `spelers`
ADD CONSTRAINT spelers_ibfk_1 FOREIGN KEY (nationaliteit_id) REFERENCES nationaliteit (id) ON UPDATE CASCADE;
--
-- Beperkingen voor tabel `wedstrijden`
--
ALTER TABLE `wedstrijden`
ADD CONSTRAINT wedstrijden_ibfk_6 FOREIGN KEY (stadion_id) REFERENCES stadion (id) ON UPDATE CASCADE,
ADD CONSTRAINT wedstrijden_ibfk_1 FOREIGN KEY (thuis_id) REFERENCES clubs (id) ON UPDATE CASCADE,
ADD CONSTRAINT wedstrijden_ibfk_2 FOREIGN KEY (uit_id) REFERENCES clubs (id) ON UPDATE CASCADE,
ADD CONSTRAINT wedstrijden_ibfk_3 FOREIGN KEY (seizoen_id) REFERENCES seizoen (id) ON UPDATE CASCADE,
ADD CONSTRAINT wedstrijden_ibfk_4 FOREIGN KEY (soort_id) REFERENCES soort_wedstr (id) ON UPDATE CASCADE,
ADD CONSTRAINT wedstrijden_ibfk_5 FOREIGN KEY (scheids_id) REFERENCES scheidsrechters (id) ON UPDATE CASCADE;
p.s. Sorry voor de grote hoeveelheid maar zou toch graag willen weten of ik zo goed zit te denken omdat het toch wel een belangrijke stap is in de website.
Ik ben dus met de bovenstaande database aan de gang gegaan. Nu probeer ik echter de wedstrijden te selecteren. Het probleem is echter dat het met nog niet lukt om alles in 1 query te regelen. Wat ik wil hebben is het volgende: (te vinden in het select stuk)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SELECT we.id,
th.naam AS thuis,
ui.naam AS uit,
we.datum,
ws.naam AS soort,
se.jaar AS seizoen,
sc.naam AS scheids,
st.naam AS stadion,
COUNT(dt.id) AS dthuis,
COUNT(du.id) AS duit
FROM
wedstrijden AS we
INNER JOIN clubs AS th ON we.thuis_id = th.id
INNER JOIN clubs AS ui ON we.uit_id = ui.id
INNER JOIN soort_wedstr AS ws ON we.soort_id = ws.id
INNER JOIN seizoen AS se ON we.seizoen_id = se.id
INNER JOIN scheidsrechters AS sc ON we.scheids_id = sc.id
INNER JOIN stadion AS st ON we.stadion_id = st.id
LEFT JOIN goals AS dt ON we.id = dt.wedstr_id
RIGHT JOIN goals AS du ON we.id = du.wedstr_id
WHERE dt.speler_id != 2
AND du.speler_id = 2
GROUP BY we.id
ORDER BY we.datum ASC
th.naam AS thuis,
ui.naam AS uit,
we.datum,
ws.naam AS soort,
se.jaar AS seizoen,
sc.naam AS scheids,
st.naam AS stadion,
COUNT(dt.id) AS dthuis,
COUNT(du.id) AS duit
FROM
wedstrijden AS we
INNER JOIN clubs AS th ON we.thuis_id = th.id
INNER JOIN clubs AS ui ON we.uit_id = ui.id
INNER JOIN soort_wedstr AS ws ON we.soort_id = ws.id
INNER JOIN seizoen AS se ON we.seizoen_id = se.id
INNER JOIN scheidsrechters AS sc ON we.scheids_id = sc.id
INNER JOIN stadion AS st ON we.stadion_id = st.id
LEFT JOIN goals AS dt ON we.id = dt.wedstr_id
RIGHT JOIN goals AS du ON we.id = du.wedstr_id
WHERE dt.speler_id != 2
AND du.speler_id = 2
GROUP BY we.id
ORDER BY we.datum ASC
Daarbij heb ik de bovenstaande query gebruikt. Het gaat goed totdat ik de uitslag wil bepalen. Voor de duidelijkheid du.speler_id = 2 houd in dat speler_id 2 voor een uit doelpunt staat. Laat ik de doelpunten weg dan krijg ik het gewenste resultaat maar bij deze query retourneert hij niets.
Weten jullie waar dit aan kan liggen?
Alvast bedankt voor de moeite
Gewijzigd op 01/01/1970 01:00:00 door remco
Je hebt 2x een WHERE in je query zitten, gebruik hier een OR of AND
oeps vergeten te wijzigen ;) Heb een oudere versie van de query hierboven neergezet... dat gaf inderdaad eerst ook een error maar is nu goed (zal hem weer even wijzigen hierboven