login  Naam:   Wachtwoord: 
Registreer je!
 Forum

probleem met having, group by

Offline pattex007 - 30/10/2011 15:25
Avatar van pattex007Lid hallo

ik probeer een query te schrijven om de spelers uit te halen per ploeg die meer doelpunten hebben gescoord dan de gemiddelde door hun ploeg gemaakt werden:

  1. SELECT wo.opstellingid, s.naam ,p.naam ,d.aantal FROM speler s , ploeg p, wedstrijdopstelling wo, doelpunten d
  2. WHERE s.stamnummer = p.stamnummer AND s.rijksregisternummer = wo.rijksregisternummer
  3. AND wo.opstellingid = d.opstellingid AND d.aantal != 0


[IMG]http://img267.imageshack.us/img267/5601/naamloostah.png[/IMG]


ik heb deze query geprobeert maar krijg onvoldoende gegevens:

  1. SELECT wo.opstellingid, s.naam ,p.naam ,d.aantal , avg(d.aantal) FROM speler s , ploeg p, wedstrijdopstelling wo, doelpunten d
  2. WHERE s.stamnummer = p.stamnummer AND s.rijksregisternummer = wo.rijksregisternummer
  3. AND wo.opstellingid = d.opstellingid AND d.aantal != 0
  4. GROUP BY p.naam
  5. HAVING d.aantal > avg(d.aantal)


[IMG]http://img710.imageshack.us/img710/1098/93094513.png[/IMG]

1 antwoord

Gesponsorde links
Offline Stijn - 01/11/2011 23:25
Avatar van Stijn PHP expert Je zal op de spelersnaam moeten groeperen. Je hebt meerdere spelers in die groep maar er wordt maar één speler weergegeven omdat die query enkel de groep toont. Als je een count(s.*) erbij zet in je select, ga je dat zien.

  1. SELECT s.naam, p.naam
  2. FROM spelers AS s
  3. INNER JOIN ploeg AS p ON(s.stamnummer = p.stamnummer)
  4. INNER JOIN wedstrijdopstelling AS wo ON(s.rijksregisternummer = wo.rijksregisternummer)
  5. INNER JOIN doelpunten AS d ON(wo.opstellingid = d.opstellingid)
  6. WHERE d.aantal != 0
  7. GROUP BY s.naam, p.naam
  8. HAVING d.aantal > avg(d.aantal)


Test die query eens.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.165s