- - Ik draai en maak muziek :) - -
It's not far back to sanity
At least it's not for me
And when the wind is right you can sail away
And find serenity
1
2
3
| SELECT A.artno , A.description, A.color, A.size, A.price FROM Article A WHERE A.price IN (SELECT DISTINCT A.price FROM Article A ORDER BY A.price LIMIT 2) |
zoiets?
foutje
[ Voor 9% gewijzigd door Neman op 18-06-2003 15:38 ]
1
2
| SELECT min(Article.price), ... FROM Article |
En voor de opeen na goedkoopste moet je de query sorteren en vervolgens eens naar het TOP statement kijken
I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.
Dan pas kan je de twee goedkoopste eruit halen.
Dus dan sorteren op prijs + andere velden en met LIMIT (in geval van MySQL) er maar 2 uithalen.
Neem je whisky mee, is het te weinig... *zucht*
Server: Msg 156, Level 15, State 1, Line 3
Incorrect syntax near the keyword 'IN'.
Server: Msg 156, Level 15, State 1, Line 3
Incorrect syntax near the keyword 'ORDER'.
- - Ik draai en maak muziek :) - -
It's not far back to sanity
At least it's not for me
And when the wind is right you can sail away
And find serenity
Zou zoiets ook niet werken?
Sorteer de lijst artikelen oplopend op prijs en pak alleen de eerste twee elementen...
Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.
1
| ORDER BY price DESC LIMIT 2 |
of zie ik nu iets over het hoofd
Verwijderd
1
| ORDER BY PRICE LIMIT 2 |
[ Voor 4% gewijzigd door Verwijderd op 18-06-2003 15:39 ]
Die eerste methode had ik ook al bedacht maar hoe krijg ik dan de overige eigenschappen (kolommen) erin? Want als ik na haakje sluiten een komma invoer om de andere eigenschappen in te voeren gaat hij daarober bitchen.Feyd-Rautha schreef op 18 June 2003 @ 15:36:
Dit is een kortere manier:
code:
1 2 SELECT min(Article.price), ... FROM Article
En voor de opeen na goedkoopste moet je de query sorteren en vervolgens eens naar het TOP statement kijken
- - Ik draai en maak muziek :) - -
It's not far back to sanity
At least it's not for me
And when the wind is right you can sail away
And find serenity
Over wat voor SQL server hebben we het eigenlijk?-_D_- schreef op 18 June 2003 @ 15:37:
Reply van server:
Server: Msg 156, Level 15, State 1, Line 3
Incorrect syntax near the keyword 'IN'.
Server: Msg 156, Level 15, State 1, Line 3
Incorrect syntax near the keyword 'ORDER'.
En de reply, op welke query was dat en waarom kan die zelf niet ontcijferen?
Neem je whisky mee, is het te weinig... *zucht*
Die had ik ook al bedacht, maar ik heb drie artikelen van dezelfde prijs die allemaal het op 1 na goedkoopste artikel zijn. Dit kan dus niet.Kaastosti schreef op 18 June 2003 @ 15:37:
"SELECT A.artno, A.description, A.color, A.size, A.price FROM Article A ORDER BY A.prince ASC LIMIT 0, 2"
Zou zoiets ook niet werken?
Sorteer de lijst artikelen oplopend op prijs en pak alleen de eerste twee elementen...
- - Ik draai en maak muziek :) - -
It's not far back to sanity
At least it's not for me
And when the wind is right you can sail away
And find serenity
Zie reply op KaasTostidayoman schreef op 18 juni 2003 @ 15:38:
Waarom niet gewoon:
code:
1 ORDER BY price DESC LIMIT 2
of zie ik nu iets over het hoofd
- - Ik draai en maak muziek :) - -
It's not far back to sanity
At least it's not for me
And when the wind is right you can sail away
And find serenity
Gebruik je MySQL , kijk dan eens naar LIMIT.
(Zorg er dan wel voor dat je je resultset sorteert).
Als je het goedkoopste artikel wilt vinden, kan dat veel sneller mbhv volgende query:
1
2
3
| select min(a.price), a.artno, a.naam from article a group by a.artno, a.naam |
https://fgheysels.github.io/
DISTINCT er tussen gooien-_D_- schreef op 18 juni 2003 @ 15:39:
[...]
Die had ik ook al bedacht, maar ik heb drie artikelen van dezelfde prijs die allemaal het op 1 na goedkoopste artikel zijn. Dit kan dus niet.
LOL@KAASTOSTI
[quote]Kaastosti schreef op 18 June 2003 @ 15:37:
...
ORDER BY A.prince ASC LIMIT 0, 2"
...[/quote]
ORDER BY CHOCO.PRINCE!!
[ Voor 31% gewijzigd door Yo-han op 18-06-2003 15:43 ]
Goeie vraag, tis geen MySQL server voor zover ik weet. Acces de server vanaf de Uni door een Network drive aan te maken:momania schreef op 18 June 2003 @ 15:39:
[...]
Over wat voor SQL server hebben we het eigenlijk?
En de reply, op welke query was dat en waarom kan die zelf niet ontcijferen?
Verbinding maken met sequel
Open "Explorer" en klik onder menu "Tools" op "Map Network Drive…".
Tik achter "Folder:" het adres \\SEQUEL\SQL-system.
Klik op "Finish".
Je hebt nu een verbinding gemaakt met de computer SEQUEL. Op deze computer staat de practicum-applicatie.
Als het goed is verschijnt er nu een explorervenster met de inhoud van deze computer (zo niet: open "Explorer" en klik onder "All Folders" op de schijf "SQL-system on `Sequel`".)
Op deze schijf staat onder directory "Mssql7\Binn" het programma "isqlw.exe". Dit is een grafische SQL interface met sequel, de database server.
- - Ik draai en maak muziek :) - -
It's not far back to sanity
At least it's not for me
And when the wind is right you can sail away
And find serenity
Voor aggregate-functions zoals MIN, SOM, COUNT, ... moet je je query steeds GROUP BY'en. Dit was ik eventjes vergeten te vermelden...-_D_- schreef op 18 June 2003 @ 15:38:
[...]
Die eerste methode had ik ook al bedacht maar hoe krijg ik dan de overige eigenschappen (kolommen) erin? Want als ik na haakje sluiten een komma invoer om de andere eigenschappen in te voeren gaat hij daarober bitchen.
I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.
Verwijderd
select artno , description, color, size, price FROM Article
where price = (select min(price) from Article) or
price = (select min(price) from article where price > (select min(price) from article))
Jij bent Koning!!! Ik wist ff niet wat ik met al die replies aan moest en wilde net weer een nieuwe vraag gaan stellen maar deze query werkt! Dank je wel man!Verwijderd schreef op 18 June 2003 @ 15:51:
Volgens mij zou deze statement het moeten doen:
select artno , description, color, size, price FROM Article
where price = (select min(price) from Article) or
price = (select min(price) from article where price > (select min(price) from article))
- - Ik draai en maak muziek :) - -
It's not far back to sanity
At least it's not for me
And when the wind is right you can sail away
And find serenity
volgens mij zal dat sql-statement helemaal niet het gewenste resultaat afleveren.Verwijderd schreef op 18 June 2003 @ 15:51:
Volgens mij zou deze statement het moeten doen:
select artno , description, color, size, price FROM Article
where price = (select min(price) from Article) or
price = (select min(price) from article where price > (select min(price) from article))
(en zal het ook nogal eens serieus in-performant zijn).
https://fgheysels.github.io/
Het geeft dus wel precies wat ik wilde weten en het is ook precies wat ik wilde doen, alleen de uitwerking ervan wist ik even nietwhoami schreef op 18 June 2003 @ 15:53:
[...]
volgens mij zal dat sql-statement helemaal niet het gewenste resultaat afleveren.
(en zal het ook nogal eens serieus in-performant zijn).
- - Ik draai en maak muziek :) - -
It's not far back to sanity
At least it's not for me
And when the wind is right you can sail away
And find serenity
Verwijderd
SELECT *
FROM Article
WHERE Article.price = ( SELECT MIN (Article.price) FROM Article)
// dit was wat je al had: de goedkoopste
UNION
// hieronder wat erbij komt: de goedkoopste van alles behalve de goedkoopste:
SELECT *
FROM Article
WHERE Article.price = (SELECT MIN(Article.price) FROM
(SELECT *
FROM Article
WHERE Article.price > (SELECT MIN (Article.price) FROM Article))
edit: lol, ik begon te tikken toen er 0 replies waren. ik zie wel handiger oplossingen dan de mijne...
[ Voor 13% gewijzigd door Verwijderd op 18-06-2003 16:04 . Reden: haakje vergeten ]
Deze werkt ook niet helemaal zie ikVerwijderd schreef op 18 juni 2003 @ 15:57:
Beetje omslachtig, maar dit zou hem moeten zijn:
SELECT *
FROM Article
WHERE Article.price = ( SELECT MIN (Article.price) FROM Article)
// dit was wat je al had: de goedkoopste
UNION
// hieronder wat erbij komt: de goedkoopste van alles behalve de goedkoopste:
SELECT *
FROM Article
WHERE Article.price = (SELECT MIN(Article.price) FROM
SELECT *
FROM Article
WHERE Article.price > (SELECT MIN (Article.price) FROM Article))
edit: lol, ik begon te tikken toen er 0 replies waren. ik zie wel handiger oplossingen dan de mijne...
- - Ik draai en maak muziek :) - -
It's not far back to sanity
At least it's not for me
And when the wind is right you can sail away
And find serenity
Verwijderd
en vergeet niet het "commentaar" weg te halen. (kan je commentaar gebruiken in SQL??)
[ Voor 37% gewijzigd door Verwijderd op 18-06-2003 16:06 ]
Ja ik had de query helemaal aangepast en toen gaf hij nog een errortje op die select. Heb er verder niet meer naar gekeken. Maar nogmaals bedankt voor de moeite, Tweakers ruledVerwijderd schreef op 18 juni 2003 @ 16:05:
was een haakje voor een select vergeten. doet het nu wel (in Access tenminste)
en vergeet niet het "commentaar" weg te halen. (kan je commentaar gebruiken in SQL??)
- - Ik draai en maak muziek :) - -
It's not far back to sanity
At least it's not for me
And when the wind is right you can sail away
And find serenity
--dit is een commentaar regel
https://fgheysels.github.io/
Lijkt me leuk als je de 10 goedkoopste artikelen wil...Verwijderd schreef op 18 juni 2003 @ 15:51:
Volgens mij zou deze statement het moeten doen:
code:
1 2 3 4select artno , description, color, size, price FROM Article where price = (select min(price) from Article) or price = (select min(price) from article where price > (select min(price) from article))
Lijkt me leuk als je de artikelen met de 10 laagste prijzen wil...
[ Voor 16% gewijzigd door mocean op 18-06-2003 16:15 ]
Koop of verkoop je webshop: ecquisition.com
1
2
| SELECT * FROM Article WHERE price IN (SELECT DISTINCT price FROM Article ORDER BY price LIMIT BY 10) |
Werkt dit niet? (volgens mij al eerder ongeveer zo hier neergezet)
- = Step Into The Pit | Industrial Strength = -
select distinct price from article order by price desc limit 2
In $prices zet je alle prijzen die de eerste query terug geeft.
select * from article where price in ($prices).
Of met een zoals hierboven staat.
[ Voor 8% gewijzigd door Olaf van der Spek op 18-06-2003 16:49 ]
Ja daar zat ik later ook al aan te denkenmocean schreef op 18 juni 2003 @ 16:12:
[...]
Lijkt me leuk als je de 10 goedkoopste artikelen wil...
Lijkt me leuk als je de artikelen met de 10 laagste prijzen wil...
Maar op zich is dit wel een goede query, het loste iig op wat ik wilde hebben
- - Ik draai en maak muziek :) - -
It's not far back to sanity
At least it's not for me
And when the wind is right you can sail away
And find serenity
Maar als je de limit op 2 zet, pakt hij dan echt de eerste 2, of de eerste 2 verschillende prijzen (wat dus meerdere artikelen kunnen zijn)? Hmz lijkt me wel aangezien er een distinct bij staat...OlafvdSpek schreef op 18 June 2003 @ 16:49:
Dit is veel makkelijker te doen met twee queries.
select distinct price from article order by price desc limit 2
In $prices zet je alle prijzen die de eerste query terug geeft.
select * from article where price in ($prices).
Of met een zoals hierboven staat.
- - Ik draai en maak muziek :) - -
It's not far back to sanity
At least it's not for me
And when the wind is right you can sail away
And find serenity
Lijkt dus alsof het MS SQL Server 7 is...-_D_- schreef op 18 June 2003 @ 15:41:
[...]
Goeie vraag, tis geen MySQL server voor zover ik weet. Acces de server vanaf de Uni door een Network drive aan te maken:
...
Op deze schijf staat onder directory "Mssql7\Binn" het programma "isqlw.exe". Dit is een grafische SQL interface met sequel, de database server.
1
2
3
| SELECT A.artno , A.description, A.color, A.size, A.price FROM Article A WHERE A.price IN (SELECT TOP 2 A.price FROM Article A ORDER BY Price) |
MS SQL is geen MYSQL? Weten we dat ook weer
- - Ik draai en maak muziek :) - -
It's not far back to sanity
At least it's not for me
And when the wind is right you can sail away
And find serenity
Gaat niet werken als het op 1 na goedkoopste artikel 9 euro kost en er daar 3 verschillende artikelen van zijn, die worden dan niet allemaal vermeldrobjanssen schreef op 18 juni 2003 @ 19:15:
code:
1 2 3 SELECT A.artno , A.description, A.color, A.size, A.price FROM Article A WHERE A.price IN (SELECT TOP 2 A.price FROM Article A ORDER BY Price)
- - Ik draai en maak muziek :) - -
It's not far back to sanity
At least it's not for me
And when the wind is right you can sail away
And find serenity
Ja.-_D_- schreef op 18 June 2003 @ 18:32:
Maar als je de limit op 2 zet, pakt hij dan echt de eerste 2, of de eerste 2 verschillende prijzen (wat dus meerdere artikelen kunnen zijn)? Hmz lijkt me wel aangezien er een distinct bij staat...
Hoezo? Denk je dan dat MS (Microsoft) SQL == MySQL?
Gelukkig is het dus zo niet. SQL Server is vele keren beter dan MySQL.
In MySQL is wel goed en snel om eenvoudige queries uit te voeren, maar ondersteund wel geen subqueries, FK's, transactions etc....
MS SQL Server daarentegen is een volwaardig RDBMS.
https://fgheysels.github.io/
Aha zit het zowhoami schreef op 19 June 2003 @ 19:04:
[...]
Hoezo? Denk je dan dat MS (Microsoft) SQL == MySQL?
Gelukkig is het dus zo niet. SQL Server is vele keren beter dan MySQL.
In MySQL is wel goed en snel om eenvoudige queries uit te voeren, maar ondersteund wel geen subqueries, FK's, transactions etc....
MS SQL Server daarentegen is een volwaardig RDBMS.
- - Ik draai en maak muziek :) - -
It's not far back to sanity
At least it's not for me
And when the wind is right you can sail away
And find serenity
Het goede nieuws is dat er in MySQL 4.x al wel een aantal uitgebreide mogelijkheden zijn, zoals bijv. views als ik me niet vergis.
- = Step Into The Pit | Industrial Strength = -
Een webserver met een database erop?narotic schreef op 20 juni 2003 @ 12:24:
MySQL is leuk voor webservers
Ok het kan, maar het hoeft niet altijd. Je bedoeld misschien dat MySQL goed geschikt is voor webapplicaties.
https://fgheysels.github.io/
heb in een table allemaal producten, met een ProductID als product nr en ID als index (unique). Het kan dus voorkomen dat er voor ProductID = 123 meerdere rows voorkomen met een andere index (ID). Nu wil ik in 1 query van alle producten steeds de goedkoopste ophalen, dus voor een product dat 3x voorkomt, degene met de laagste totaalprijs.
ik heb de volgende query:
1
| select DISTINCT ProductID from producten order by totaalprijs asc |
Volgens mij geeft deze query wel de juiste hoeveelheid rows (dus alleen de goedkoopste), maar op deze manier kan ik natuurlijk nooit kijken welk ID de row heeft, want als ik de volgende query doe:
1
| select DISTINCT ProductID, ID from producten order by totaalprijs asc |
Geeft ie vrolijk alle producten weer, omdat er geen duplicaten meer in voorkomen (ze hebben immers allemaal een uniek ID)
dus: hoe kan ik wel de duplicaten wegfilteren en ook gelijk de ID's ophalen van de geselecteerde rows?
[ Voor 3% gewijzigd door supersook op 20-06-2003 13:26 ]
1
2
3
| SELECT A.artno , A.description, A.color, A.size, A.price FROM Article A WHERE A.price IN (SELECT TOP 2 DISTINCT A.price FROM Article A ORDER BY Price) |
zal ik dan toch maar een eigen topic openenrobjanssen schreef op 21 June 2003 @ 09:37:
Deze dan:
code:
1 2 3 SELECT A.artno , A.description, A.color, A.size, A.price FROM Article A WHERE A.price IN (SELECT TOP 2 DISTINCT A.price FROM Article A ORDER BY Price)
afaik is dit niet mogelijk. Als je de duplicaten eruit filtert (met distinct of met een group by) kan je de id's hiervan niet benaderen. Wat je wel kan doen is een group by op productID in combinatie met de functie MIN () om de laagste prijs van een product op te halen.supersook schreef op 20 June 2003 @ 13:24:
dus: hoe kan ik wel de duplicaten wegfilteren en ook gelijk de ID's ophalen van de geselecteerde rows?
1
2
3
4
| SELECT productID, ID, MIN(totaalprijs) AS laagsteprijs FROM producten GROUP BY productID ORDER BY totaalprijs asc |
...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones
Je hoeft toch geen ID's op te halen?
Je vergelijkt toch een prijs met een prijs?
de prijs die opgehaald wordt is prima, alleen klopt het ID niet > ofwel, de prijs hoort bij een ander ID, maar is wel de laagste.DeverauX schreef op 21 June 2003 @ 09:46:
[...]
afaik is dit niet mogelijk. Als je de duplicaten eruit filtert (met distinct of met een group by) kan je de id's hiervan niet benaderen. Wat je wel kan doen is een group by op productID in combinatie met de functie MIN () om de laagste prijs van een product op te halen.
SQL:
1 2 3 4 SELECT productID, ID, MIN(totaalprijs) AS laagsteprijs FROM producten GROUP BY productID ORDER BY totaalprijs asc
Ben zelf al een beetje aan het goochelen geweest, maar krijg het niet goed: iemand die het wel ziet?
volgensnarotic schreef op 20 June 2003 @ 12:24:
MySQL is leuk voor webservers met eenvoudige databases en eenvoudige queries. Echter, als het moeilijker wordt (zoals views, nested queries, transactions etc.) kan ie t niet meer. Dan is MSSQL of Oracle beter.
Het goede nieuws is dat er in MySQL 4.x al wel een aantal uitgebreide mogelijkheden zijn, zoals bijv. views als ik me niet vergis.
http://www.mysql.com/doc/en/ANSI_diff_Views.html komt het pas in 5.1
supersook: je output kan ook niet correct zijn. de groupering die je nu heb slaat nergens op.
kijk maar eens hier naar: http://vulcanus.its.tudelft.nl/~acm/got/antimysql.php en vooral punt 9. mysql is gewoon te los wat dat betreft. Het gaat vaak goed, maar heel vaak ook niet.
Mitsubishi Warmtepomp Uitlezen / Besturen | Optimaliseren
Daar was ik dus inderdaad al achter gekomen, maar heeft iemand een idee hoe ik MySQL weer in het gareel kan krijgen met deze query, of zal ik hiervoor toch steeds per product een losse query moeten gaan doen (niet echt wenselijk, maar je moet iets)?xoror schreef op 21 juni 2003 @ 11:15:
supersook: je output kan ook niet correct zijn. de groupering die je nu heb slaat nergens op.
kijk maar eens hier naar: http://vulcanus.its.tudelft.nl/~acm/got/antimysql.php en vooral punt 9. mysql is gewoon te los wat dat betreft. Het gaat vaak goed, maar heel vaak ook niet.
Dit is een query waar je normaliter een subselect voor gebruikt, dus het lijkt me niet dat het heel handig te herschrijven is naar een gewone select in mysql.supersook schreef op 21 June 2003 @ 11:36:
Daar was ik dus inderdaad al achter gekomen, maar heeft iemand een idee hoe ik MySQL weer in het gareel kan krijgen met deze query, of zal ik hiervoor toch steeds per product een losse query moeten gaan doen (niet echt wenselijk, maar je moet iets)?
en dat ondersteund mysql 3.x dus nog niet, zucht... dan maar op de de ranzige manier, dacht ik ook eens iets netjes te doenACM schreef op 21 June 2003 @ 11:49:
[...]
Dit is een query waar je normaliter een subselect voor gebruikt, dus het lijkt me niet dat het heel handig te herschrijven is naar een gewone select in mysql.