Archief - [PROG] sql

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.

Manuuz

Legacy Member
Geraak hier niet uit een sql oefening. ( tabel: planten : de benodigde velden: prijzen, plantennm )

Vraag is: Geef de namen en prijzen van planten die dezelfde prijs hebben. Sorteer op naam dan op prijs.

Had dit, maar blijkt niet echt te kloppen.
select p1.plantennm, p1.prijs from planten p1 inner join planten p2 on p1.prijs = p2.prijs order by 2

Iemand een tip ?

Manuuz

Legacy Member
select distinct p1.plantennm, p1.prijs from planten p1 inner join planten p2 on p1.plantennm <> p2.plantennm and p1.prijs = p2.prijs order by 2

Dit zou het moeten zijn volgens mij, ter info

H@voc_!nc.

Legacy Member
eel simpel

SELECT name, price FROM plant GROUP BY Price, Name ORDER BY name, price

H@voc_!nc.

Legacy Member
indeed nu zijn ze enkel gegroupeerd per prijs

SELECT name, price FROM dbo.tblTest T1
WHERE
(SELECT COUNT(1) FROM dbo.tblTest T2
WHERE T2.price = T1.price
GROUP BY T2.PRICE
) > 1
ORDER BY NAME, Price

ook een oplossing :)

Manuuz

Legacy Member
denk het ook niet, maar dees heb ik nog nie getest.
In ieder geval, mijn eerste oplossing klopt, zelf getest uiteraard, en bevesting van prof

orez

Legacy Member
die order by 2 is toch zo ni aangenaam :s

tis toch veel simpeler om order by name, price te doen? Dan ziede tenminste wagge ordered..

en havoc zijn query kan wel degelijk, er zijn meerdere manieren als met een inner join te gaan werken hé ...
Ge hebt ook nog subselects, waarmee je hetzelfde kan gaan bereiken in sommige gevallen als een inner join... niet altijd maar in vele gevallen wel, er zijn vele verschillende manieren om een SQL statement op te stellen hoor, meer als je zou denken ;)

want uw manier is trouwens verre van ideaal, een groepering van bepaalde zaken zou eigenlijk via GROUP BY moeten gebeuren... en niet gaan controleren als het <> of == is ... Daarom is GROUP BY nu eenmaal in het leven geroepen, Havoc zijn SQL statement zal dan ook veel performanter zijn als het uwe hoor.

Manuuz

Legacy Member
bon, ik heb zijn manier uitgetest op mijn database, en ik kwam tot de conclusie dat er bij hem 1 record meer werd weergegeven dan bij mij ...
Resultaat was 72 rijen bij mij, bij hem 73.

Dus ik wou nu echt wel weten welke methode de goeie is. Dus ik heb ze één na één nagekeken.

Bij de resultaten kwam de plant "Violier" voor met de prijs van "1".
Dus Violier mag maar één keer voorkomen bij de prijs van 1.
Bij mij was dit zo, bij havoc niet ...

Dus performanter of niet, het klopt NIET...
die order by 2 maakt niet uit, beetje lui, maar inderdaad, is mooier als ik het volluit schrijf..
Als je het niet gelooft, pm me dan maar, dan zal ik de database uploaden, en kunnen jullie de twee manieren eens testen.

edit: tenzij het aan mijn programma ligt :p dan zeg ik nix :)

H@voc_!nc.

Legacy Member
ja nou ik heb niet de volledige testgegevens etc maar soit

imo is uw oplossing voor uw probleem (zoals ik het begrijp) niet logisch.

Maar ja einde discusie voor mijn part heb al heel wat grelliger queries geschreven :)

nen inner join gaat ge normaal alleen gebruiken om relaties te leggen tussen tabellen (of dezelfde)

wat gij nodig hebt is een subset van gegevens dit ga je oplossen met een gecorreleerde subselect of group by as you wish.

in mijne logica he :)
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