[ACCESS] Group by

Pagina: 1
Acties:

  • Harrie21
  • Registratie: September 2004
  • Laatst online: 19-12-2024
Hallo,

Ik ben op dit moment bezig met mijn laatste opdrachten voor het afstuderen en heb zoals gewoonlijk het lastigste voor het laatst bewaard.

De opdracht die ik nu moet doen heeft betrekking op Access en we moeten formulieren maken waarop de uitslagen van voetbalwedstrijden worden weergegeven en dergelijke. Op zich lukt het best goed, alleen ik heb een probleem met de group by functie.

het gaat om het volgende:

als ik de volgende SQL tekst heb:
SELECT DISTINCT tblclubs.*, tblwedstrijden.datum, tblseizoen.BeginDatum, tblseizoen.EindDatum
FROM tblclubs, tblwedstrijden, tblseizoen
WHERE (((tblwedstrijden.datum) Between [begindatum] And [einddatum]) AND ((tblwedstrijden.Thuisploeg)=[clubid]) AND ((tblseizoen.seizoen)='2004/2005'))
ORDER BY tblclubs.Club;
Dan krijg ik een overzicht van alle teams (18 in totaal), alleen worden ze meerdere keren weergegeven. Ik krijg dus drie keer het adres van ajax, 3 keer Ado, 4 keer AZ. Nu wil ik dit eigenlijk allemaal maar 1 keer zien, dus probeer ik een group by command toe te voegen. Als ik dan het volgende doe:
SELECT DISTINCT tblclubs.*, tblwedstrijden.datum, tblseizoen.BeginDatum, tblseizoen.EindDatum
FROM tblclubs, tblwedstrijden, tblseizoen
WHERE (((tblwedstrijden.datum) Between [begindatum] And [einddatum]) AND ((tblwedstrijden.Thuisploeg)=[clubid]) AND ((tblseizoen.seizoen)='2004/2005'))
GROUP BY tblclubs.Club
ORDER BY tblclubs.Club;
Dan krijg ik de melding dat ik velden die geselecteerd zijn met * (tblclubs) niet kan groeperen.

Weet iemand wat ik hieraan kan doen?

Sup


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:26
Een group by moet je alleen maar gebruiken als je gebruik maakt van 'aggregate functies' zoals SUM/COUNT/AVG

In het geval van jouw query: als je wilt grouperen: op wat wil je dan grouperen ? en welke wedstrijddatum wil je dan laten zien ?
Je snapt dus waarschijnlijk wel dat het niet mogelijk is om het op die manier te doen. Er moet een keuze gemaakt worden welke waardes je nu eigenlijk wilt zien voor de 'niet dubbele' velden.

Als je echter voor alle clubs, alle data wilt zien waarop ze wedstrijden spelen (met de originele query van jou dus), dan zal je er niet vanuit kunnen dat die 'dubbele waardes' (bv clubnaam, adres, etc...) meerdere keren worden getoond.
Als je dat toch wilt vermijden, dan zal je dat in je applicatie zelf moeten doen. SQL is een taal die het je mogelijk maakt gegevens op te halen/bewerken, maar met SQL moet je niet proberen om de lay-out van die opgehaalde gegevens te verzorgen.

[ Voor 59% gewijzigd door whoami op 05-08-2005 15:53 ]

https://fgheysels.github.io/


  • Harrie21
  • Registratie: September 2004
  • Laatst online: 19-12-2024
Het gaat hier niet direct om een wedstrijddatum.

Deze query laat alle teams zien, met adres en stadion gegevens. Mijn probleem is alleen dat hij 3 keer ajax laat zien (gegevens zijn exact gelijk), waar ik hem eigenlijk maar 1 keer wil zien.

Inplaats van 18 records geeft hij dus 63 records weer. Ik dacht dat ik dit kon oplossen door Ajax te grouperen zeg maar, maar dat werkt dus niet?

Sup


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:26
Waarom haal je dan die andere gegevens op ? Ik zie in die query toch dat je een wedstrijd-datum ophaalt...
Op die manier zal die distinct die je gebruikt, natuurlijk niet het gewenste resultaat geven, want alle rijen zijn nu uniek.
Als je die wedstrijd-datum in je select weglaat, dan zal je wel enkel de ploegen te zien krijgen.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:26
Trouwens, als je alleen een overzicht wil van alle ploegen, waarom doe je dan niet gewoon een simpele select op de tblclubs tabel (zonder joins dus)

https://fgheysels.github.io/


  • Harrie21
  • Registratie: September 2004
  • Laatst online: 19-12-2024
Ja, geen idee eigenlijk.

Dit deel van de opdracht krijg je kant en klaar van de docent. Ik heb dus geen idee waarom hij dit zo gedaan heeft, ik moet er alleen mee verder.

Ik wil het graag veranderen omdat ik nu ook in de overige opdrachten deze dubbele gegevens krijg!

Edit: Jouw oplossing geeft inderdaad het gewenste effect. Ik vraag me nu alleen af waarom die docent het zo gedaan heeft, want hij zal zelf toch ook wel weten dat dit dan gebeurd!

In elk geval bedankt voor de hulp!

[ Voor 29% gewijzigd door Harrie21 op 05-08-2005 16:44 ]

Sup


  • BertS
  • Registratie: September 2004
  • Laatst online: 13-02 08:33
Harrie21 schreef op vrijdag 05 augustus 2005 @ 16:41:
Ik vraag me nu alleen af waarom die docent het zo gedaan heeft, want hij zal zelf toch ook wel weten dat dit dan gebeurd!
Waarschijnlijk om jouw whoami's kennis/creativiteit/vindingrijkheid te testen :)

  • Harrie21
  • Registratie: September 2004
  • Laatst online: 19-12-2024
bee-es schreef op vrijdag 05 augustus 2005 @ 17:17:
[...]

Waarschijnlijk om jouw whoami's kennis/creativiteit/vindingrijkheid te testen :)
:D

Sup

Pagina: 1