Beste PHP'ers

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.
**BUMP**
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.
Beste,

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)

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


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
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

Reageren