Database - SQL probleem

Status
Niet open voor verdere reacties.

leifoet

Gebruiker
Lid geworden
7 okt 2007
Berichten
326
Ik probeer in een database volgende gegevens te verzamelen
=> tabel 1 = gegevens van de leden/spelers van de sportclub als V(oetballer) 1, V2, V3 ... (velden : o.a. naam, adres ...)
=> tabel 2 = gegevens van de matchen M1, M2, M3 ... (velden : o.a. datum, uur, veld, scheidsrechter ...)

Doel :
een 'SELECT' (uitdraai) uit de tabellen waarin voor elke speler het al dan niet meespelen zou kunnen uitgelezen worden : bijvoorbeeld voor M(atch)1 => V1=O(pgesteld), V2=R(eserve), V3=Z(iek), V4=NO (niet gesteld), .....
en ook kan toegevoegd (insert) en aangepast worden.

Mijn vraag is
Kan ik met bovenstaande 2 tabellen dit resultaat bereiken ? Ik zie niet zo best waar (in welke tabel ?) ik de combinatiereeks Voetballer1 is Opgesteld / V2 is Reserve / etc moet stockeren ...

Is er iemand die mij een beetje wegwijs kan maken in deze ?
Dank
 
Een wedstrijd is een andere entiteit dan een Speler (dat heb je al geregeld) maar de wedstrijd gegevens zijn dat ook. Elke wedstrijd is uniek (datum, deelnemende clubs, locatie, veld ec). Dus je mist nog een tabel. In die tabel leg je de WedstrijdID en de SpelerID vast, en de rol van de speler. Eventueel ook de tijd van de invalbeurt, want een reservespeler kan natuurlijk invallen en die speler heeft dan de rol Invaller en niet meer Reserve. Spelers die niet zijn ingevallen, houden dus de rol Reserve.
 
Dank voor de tips.
Fungeren WedstrijdID en SpelerID dan respectievelijk als rijen en kolommen (velden) van tabel 3 of heb dat mis ?
Waar plaats je dan 'Tijd/invalbeurt' ?
Sorry voor deze vragen - ben een amateur.
Dank
 
Een tabel bestaat uit records, en een record bestaat uit velden. WedstrijdID en SpelerID zijn dus beiden velden, net als Invalbeurt, of hoe je dat veld ook wilt noemen. Daarnaast kun je nog wel wat velden bedenken, lijkt mij. Zo is een veld [Positie] wellicht ook handig als je wilt weten of een speler invalt als keeper of als aanvaller bijvoorbeeld. Een overzicht van één wedstrijd bestaat dus uit meerdere records, waarbij het WedstrijdID in elk record terugkomt. Wat je precies te zien krijgt, hangt af van het programma waar je de database mee maakt. Dat is nu nog onbekend voor ons :).
 
Dank voor aanvullende toelichting.
De indeling van tabel 3 is mij nog niet heel duidelijk en meer bepaald de (detailwerking van de) velden WedstrijdID en SpelerID.

Mag (moet) ik mij deze tabel 3 als volgt voorstellen ?
..................... WedstrijdID 1.......WedstrijdID 2.......WedstrijdID 3.....WedstrijdID 4......etc.......(=kolommen=velden)
SpelerID 1 ..................S......................O .....................S
SpelerID 2...........................................S
SpelerID 3 ..................K(eeper)............K......................K
SpelerID 4
etc (= rijen)

Bij elk 'knooppunt' van de Speler (=ID's uit tabel 1 spelers) en Wedstrijd (=ID's uit tabel 2 Matchen) komt een code - bijvoorbeeld S = speelt heel de match. De codes zijn 'overeen te komen'/nog te verfijnen in functie van plaats op het veld / eventueel speelduur etc.
Nu weet ik voor
-elke speler in welke match(en) hij optreedt
-voor elke match : wie speelt
en kan ik SELECT queries maken (programmatie) om dit effect visueel uitgewerkt te bekomen in een (gelijkaardig) overzicht

Is dit logisch of moeten kolommen en rijen best gewisseld worden ? of worden de ID's-velden in uw visie anders (beter) ingevuld / aangewend ?

Dank voor bemerkingen
 
Laatst bewerkt:
Nee, dat heb je helemaal verkeerd begrepen. Als ik zeg dat je één veld WdstrijdID nodig hebt, en één veld SpelerID, dan bedoel ik dat natuurlijk ook!
Voor elke wedstrijd/speler combinatie heb je dus één record nodig. Ergo: voor een voetbalwedstrijd krijg je dus minstens 22 records, er vanuitgaande dat elk team met 11 spelers start.
 
Ik zat inderdaad op het verkeerde spoor - met dank aan OctaFish.

Nu wil ik die (3de) tabel 'opvullen'.

Onderstaande insert query geeft evenwel geen resultaat.
ik vermoed dat dit stukje code
(SELECT omschrijving FROM tabelB) AS Activiteit
de boosdoener is, want als ik het weglaat dan werkt de 'insert' wel en verschijnen de records in tabelC.

INSERT INTO tabelC ( datum, activiteit, spelernr, status )
SELECT [Datum?] AS Datum, (SELECT matchomschrijving FROM tabelB) AS Activiteit, tabelA.spelernr, [status?] AS status
FROM tabelA
ORDER BY tabelA.spelernr;

Met (SELECT omschrijving FROM tabelB) AS Activiteit
wil ik de betreffende matchen tonen en selecteren in een keuzelijst (uit tabel B = totaal van de matchen) en vervolgens de MatchID 'insert' in de tabel C voor alle spelers van die match(en).
Mijn probleem is : met welk juiste code krijg ik die keuzelijst in die insert query - of is dat niet mogelijk ?
Dank voor een codetip.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan