Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

SQL optel vraag

Pagina: 1
Acties:
  • 392 views

Verwijderd

Topicstarter
Ik heb de volgende query:

SELECT bezoek.reisnr, SUM(bezoek.verblijfsduur), COUNT(deelname.klantnr) FROM bezoek
JOIN deelname ON deelname.reisnr = bezoek.reisnr
WHERE verblijfsduur > 10
GROUP BY bezoek.reisnr

Wat ik wil is waar nu SUM(bezoek.verblijfsduur) staat alleen de rijen optelt die bij dat bepaalde reisnr horen, maar nu telt hij alle rijen van verlbijfsduur bij elkaar op.

Hoop dat ik duidelijk genoeg ben.

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 25-11 01:01
Als reisnr niet uniek is in bezoek en niet in deelname, dan zorgt die join er inderdaad voor dat er meer waardes opgeteld worden dan dat jij opgeteld wilt zien worden. Die sum zal dus voor de join moeten worden uitgevoerd, bijvoorbeeld door tegen een subquery op bezoek met die sum te joinen ipv tegen bezoek.

  • Killemov
  • Registratie: Januari 2000
  • Laatst online: 25-09 11:11

Killemov

Ik zoek nog een mooi icooi =)

Hmmm dus je bent eigenlijk op zoek naar count(deelname) * verblijfsduur?

Hey ... maar dan heb je ook wat!


  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
moet je dat ook niet in de WHERE zetten?
SQL:
1
2
3
4
5
SELECT bezoek.reisnr, SUM(bezoek.verblijfsduur), COUNT(deelname.klantnr) FROM bezoek
JOIN deelname ON deelname.reisnr = bezoek.reisnr
WHERE verblijfsduur > 10
AND reisnr = 1234
GROUP BY bezoek.reisnr

Verwijderd

Je wilt alleen regels meetellen die je bijsluit in de join, dus moet je de voorwaarde ook onderdeel van de join maken. Nu staat de voorwaarde op de hele query. Maak van de where een and en het is voor elkaar. Dus

SELECT bezoek.reisnr, SUM(bezoek.verblijfsduur), COUNT(deelname.klantnr) FROM bezoek
JOIN deelname ON deelname.reisnr = bezoek.reisnr
and verblijfsduur > 10
GROUP BY bezoek.reisnr

[ Voor 10% gewijzigd door Verwijderd op 24-09-2010 20:03 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:10

Creepy

Tactical Espionage Splatterer

Dat ben je. Maar dat is nog niet genoeg ;) Je zult ook moeten aangeven wat voor zaken je allemaal al hebt geprobeerd en wat daar niet mee lukte. Nu blijft het bij "dit is de code en dit moet het gaan doen" zonder dat je aangeeft hoe en wat, en dat is nu net niet de bedoeling. In Programming FAQ - SQL staat het 1 en ander uitgelegd. Kijk dat eens door en ga eens wast probereren. Mocht je dat (al) gedana hebben en er nog steeds niet uitkomen, dan kan je een nieuw topic openen, maar let daarbij aub wel op de Het algemeen beleid #quickstart zodat je genoeg informatie geeft

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.