Problemen met HAVING query

Status
Niet open voor verdere reacties.

Mikestyle

Gebruiker
Lid geworden
28 jun 2008
Berichten
20
Ik ben bezig met een opdracht voor het vak Databases, maar ik kom niet tot een oplossing voor de volgende vraag:

Screen Shot 2015-03-03 at 15.50.33.png

De code die ik tot nu toe heb geschreven is:
Code:
SELECT distinct name
FROM Persons P, Knows K
WHERE K.personA_id = P.id AND K.personB_id = P.id
AND age > 60
GROUP BY name
HAVING SUM(K.id) = 2

Hoe krijg ik het werken en daarmee het antwoord op de vraag?

Alvast bedankt,
Mike
 
In principe is het niet de bedoeling dat we direct antwoorden geven. Ik neem aan dat deze query geen resultaten oplevert? Het aantal rijen waar p.ID in zowel kolom A als B zal staan zullen er niet veel zijn.
 
Het levert inderdaad geen query op. Ik doe dit zelfstandig online met opgaven van internet dus er wordt weinig uitleg verschaft, daarom weet ik niet of ik wel de juiste structuur en queries gebruik.
 
Je gebruikt nu:
Code:
HAVING SUM(K.id) = 2
Wat de nummers die in K.id staan allemaal bij elkaar optellen. Je krijgt dan bijv. dit:
Code:
K.id = 10
K.id = 15
K.id = 35
SUM(K.id) wordt dan 60, i.p.v. het getal 3 dat je wilt hebben.
Wat je eigenlijk wilt is het aantal rijen van de Knows (K) tabel ophalen, en daarvoor moet je COUNT gebruiken.

Verder is de WHERE die je nu gebruikt een (voor mijn weten) verouderde manier van joinen. Je kan hier beter INNER JOIN's voor gebruiken, zodat je betere leesbare code voor andere programmeurs kan schrijven én meteen een stap maakt naar de wat ingewikkeldere joins (waaronder LEFT/RIGHT). De manier van joinen die je nu gebruikt kan overigens vrij weinig kwaad, het is vrijwel hetzelfde als joinen met een inner join, dus mocht de opleiding/cursus dat vereisen, geen probleem.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan