Archief - SQL: Subvraag Having

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.

feyeuh

Legacy Member
Beste 9liver's,
Ik ben bezig aan een opgave voor school en toch kom ik er niet uit.
Misschien kunnen jullie mij helpen..

Opgave:
Toon de naam (namen) van de leverancier(s) met het grootste assortiment planten. (met having in subquery)

Relatieschema:
www.the-kelly.com/sql.JPG

De database: als je zelf eens wilt proberen:
www.the-kelly.com/TuincentrumKHK2008.sql

Dit is tot wat ik zelf gekomen ben:
Code:
select Lev_naam
from dbo.Leveranciers
where Lev_code IN (Select Lev_code 
				   FROM dbo.Offertes 
				   WHERE Art_code IN ( Select Art_code
									   FROM dbo.Planten))

Gogeta

Legacy Member
btw beetje voze opdracht vink... ge kunt zien wa het max aantal planten is dat een leverancier al heeft op een offerte staan :/

plant hangt vast aan een offerte... indien die plant wel beschikbaar is, maar nognooit is vermeld op een offerte, dan kunde da toch nie weten?

Kemblin

Legacy Member
was ff aant denken

als ge nu:

join tabbelen Offertes en Planten op Art_Code
group de resultaattabel by Art_Code en doe ne count(*)
op deze query doe je iets alla
select max(count)
en dan achteraan having 1==1 ofzo
nee? :D

raar om planten aan offertes te hangen, ne plant bestaat dus enkel voor u als er een offerte van is :/

Kemblin

Legacy Member
ik ben nu niet meer into sql maar kheb toch iets neergekladderd, zal ni echt werken maar misschien kunt ge iets met de manier van denken. Misschien zit ik er compleet naast...

Code:
SELECT Lev_Naam 
FROM Leveranciers 
WHERE Lev_Code IN (
	SELECT Lev_Code 
	FROM (
		SELECT Lev_Code, count(*) AS aantal 
		FROM Offertes JOIN Planten ON (Offertes.Art_Code == Planten.Art_code) 
		GROUP BY Lev_Code
	) 
	HAVING (max(aantal) == aantal)
)

feyeuh

Legacy Member
Code:
select l.Lev_naam,count(p.plantennaam)
from dbo.Leveranciers l,dbo.Planten p,dbo.Offertes o
where l.Lev_code = o.lev_code and o.art_code = p.art_code 
GROUP BY l.lev_naam
Having count(p.plantennaam) >= 5

Kheb het zonder subvraag opgelost. Heb count gebruikt zoals jullie voorstelde. Met sub kan je dit percies niet oplossen . Omdat je in de hoofdvraag count niet kan zetten.

Springfield

Legacy Member
Code:
select top 1 lev_naam from leveranciers
inner join (offertes inner join planten on offertes.art_code = planten.art_code)
on leveranciers.lev_code = offertes.lev_code
group by lev_naam
having count(planten.art_code)

probeer dit eens moest je er nog achter zoeken ofc :) kan mis zitten
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