Archief - SQL oefening

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Blackeagle

Legacy Member
Geef alle spelers die meer wedstrijden gespeeld hebben dan het aantal wedstrijden dat de huidige voorzitter heeft verloren. De huidige voorzitter komt zelf niet in de lijst voor. Gebruik geen subqueries.
Sorteer op spelersnr.

database bestaat uit tabellen : spelers, bestuursleden, wedstrijden

Iemand enig idee hoe ik hieraan zou kunnen beginnen, een kleine tip is all I need. ;)

Blackeagle

Legacy Member
Een wedstrijd wordt door slechts een speler gespeeld dat lost het wel op ;).

SideShow

Legacy Member
uhu

begin eerst gewoon met alle spelers weer te geven met ernaast hun aantal wedstrijden
en dan ben je vertrokken

in stapjes werken en denken, zo zou ik het doen

Blackeagle

Legacy Member
bestuursleden hebben een spelersnummer en functie. Spelers hebben een spelersnr, naam, .... . wedstrijden hebben één spelersnr, gewonnensets, verlorensets.

SideShow

Legacy Member
geen subquery en aggregate functies in de where clause zijn natuurlijk ook niet mogelijk

ik veronderstel dat het 1 nette query moet zijn, zonder scripts of dit ?

Is wel een interessante oefening ... ik meen mij te herinneren ook zulke oefeningen te krijgen tijdens mn graduaat ... ondertussen ben ik het wel vergeten eigenlijk

Luigi1984

Legacy Member
Lastig zonder de tabellen te hebben, het is bvb niet erg duidelijk waar je de verloren matchen van de voorzitter kan zien. Mr ik zou in die richting denken:

Select spr.naam
, SUM(wdstr.gewonnensets+wdstr.verlorensets)
FROM spelers spr
JOIN wedstrijden wdstr ON (spr.spelersnr = wdstr.spelersnr)
where SUM(wdstr.gewonnensets+wdstr.verlorensets) > voorzitter verloren wedstrijden
group by spr.naam, SUM(wdstr.gewonnensets+wdstr.verlorensets)

cG`

Legacy Member
Code:
SELECT s.ID, s.Naam, COUNT(DISTINCT sw.ID) 'Gespeelde wedstrijden', COUNT(DISTINCT bw.ID) 'Verloren wedstrijden voorzitter'
FROM Bestuurslid b
JOIN Wedstrijd bw
	ON bw.SpelerID = b.SpelerID
	AND bw.AantalVerlorenSets > AantalGewonnenSets
JOIN Speler s ON s.ID != b.ID
JOIN Wedstrijd sw ON sw.SpelerID = s.ID
WHERE b.Functie = 'Voorzitter'
GROUP BY s.ID, s.Naam
HAVING COUNT(DISTINCT sw.ID) > COUNT(DISTINCT bw.ID)

Dit zou moeten werken, geen idee of het natuurlijk de ideale manier is
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan