Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!
Quick and dirty oplossing:
Je kunt misschien 2 queries doen en deze dmv een UNION aan elkaar plakken.
Eerst selecteer je de niet lege velden, en die sorteer je. Daarna selecteer je de lege velden...
Je kunt misschien 2 queries doen en deze dmv een UNION aan elkaar plakken.
Eerst selecteer je de niet lege velden, en die sorteer je. Daarna selecteer je de lege velden...
https://fgheysels.github.io/
Zeg dat wel: "Quick and dirty oplossing", maar het is natuurlijk een idee, alleen nu is de vraag: Ik gebruik zo'n functie dat je alleen de eerste x records per pagina ziet, werkt dit dan ook nogOp vrijdag 05 juli 2002 13:53 schreef whoami het volgende:
Quick and dirty oplossing:
Je kunt misschien 2 queries doen en deze dmv een UNION aan elkaar plakken.
Eerst selecteer je de niet lege velden, en die sorteer je. Daarna selecteer je de lege velden...
Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!
Verwijderd
uh ja.. dat lijkt me wel. Select TOP x .... en dat doe je dan met je 2e quey precies het zelfde
maar toch wel dirty. Al zeg ik het zelf.Op vrijdag 05 juli 2002 14:53 schreef Otis het volgende:
De union oplossing is niet quick and dirty maar de enige goede.
https://fgheysels.github.io/
De ORDER BY staat bij een union onderaan en slaat op de gehele set (oftwel ORDER BY wordt NA de UNION (en dan in dit geval natuurlijk UNION ALL)) uitgevoerd.
Je kunt beter een functie op de betreffende kolom loslaten in je ORDER BY.
Bijv. (ORacle)
<select>
ORDER BY
DECODE( veld, NULL, 1, 0 ) ASC
Als veld NULL is wordt de waarde 1, anders 0
Je kunt beter een functie op de betreffende kolom loslaten in je ORDER BY.
Bijv. (ORacle)
<select>
ORDER BY
DECODE( veld, NULL, 1, 0 ) ASC
Als veld NULL is wordt de waarde 1, anders 0
He's mad, he's mad, he's madder then mad Jack McMad, winner of last years madman competition.
Da's ook een oplossing maar uw DBMS moet dan wel zo'n functie hebben.Op vrijdag 05 juli 2002 15:00 schreef McMad het volgende:
De ORDER BY staat bij een union onderaan en slaat op de gehele set (oftwel ORDER BY wordt NA de UNION (en dan in dit geval natuurlijk UNION ALL)) uitgevoerd.
Je kunt beter een functie op de betreffende kolom loslaten in je ORDER BY.
Bijv. (ORacle)
select
ORDER BY
DECODE( veld, NULL, 1, 0 ) ASC
Als veld NULL is wordt de waarde 1, anders 0
Trouwens, als je je query zo schrijft:
code:
1
2
3
4
5
6
7
8
9
10
11
| ( SELECT kolom FROM tabel ORDER BY kolom ) UNION ( SELECT kolom FROM tabel2 ORDER BY tabel2 ) |
slaat die order by toch niet op de gehele resultset.
Trouwens, als je DBMS zo geen functie heeft, en die ORDER BY dan toch op de gehele resultset slaat van een UNION kan je het ook zo doen:
code:
1
2
3
4
5
6
7
8
| SELECT 0, naam FROM tabel WHERE veld is not null UNION SELECT 1, naam FROM tabel WHERE veld is NULL ORDER BY 1, naam |
https://fgheysels.github.io/
Oracle (7.3) kan in ieder geval alleen maar sorteren over de complete union. Overigens zou ik in jou voorbeeld liever een UNION ALL gebruiken.Op vrijdag 05 juli 2002 15:08 schreef whoami oa het volgende:
code:
1 UNION
He's mad, he's mad, he's madder then mad Jack McMad, winner of last years madman competition.
Ik grbruik nuOp vrijdag 05 juli 2002 15:08 schreef whoami het volgende:
[..]
Da's ook een oplossing maar uw DBMS moet dan wel zo'n functie hebben.
Trouwens, als je je query zo schrijft:
code:
1 2 3 4 5 6 7 8 9 10 11 ( SELECT kolom FROM tabel ORDER BY kolom ) UNION ( SELECT kolom FROM tabel2 ORDER BY tabel2 )
slaat die order by toch niet op de gehele resultset.
Trouwens, als je DBMS zo geen functie heeft, en die ORDER BY dan toch op de gehele resultset slaat van een UNION kan je het ook zo doen:
code:
1 2 3 4 5 6 7 8 SELECT 0, naam FROM tabel WHERE veld is not null UNION SELECT 1, naam FROM tabel WHERE veld is NULL ORDER BY 1, naam
code:
1
| SQL_STRING = "SELECT 0 FROM PersoneelGegevens WHERE Gebruikersnaam <> '' UNION SELECT 1 FROM PersoneelGegevens WHERE Gebruikersnaam = ''" |
Dit is ook niet goed, hij opent wel de database maar als ik met RS("xxx") iets uit de database wil lezen dan geeft hij de volgende melding:
code:
1
| Kan het item niet vinden in de collectie die overeenkomt met de gewenste naam of het gewenste nummer. |
Maar de naam is zeker weten goed, want als ik de SQL_STRING vervangt door:
code:
1
| SQL_STRING = "SELECT * FROM PersoneelGegevens ORDER BY Gebruikersnaam" |
Dan geeft hij wel alles netjes!
Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!
Tuurlijk, hij kan het item (de kolomnaam) niet vinden, omdat je hem niet selecteert.Op vrijdag 05 juli 2002 15:32 schreef Polderdijk het volgende:
Ik grbruik nu
code:
1 SQL_STRING = "SELECT 0 FROM PersoneelGegevens WHERE Gebruikersnaam <> '' UNION SELECT 1 FROM PersoneelGegevens WHERE Gebruikersnaam = ''"
Dit is ook niet goed, hij opent wel de database maar als ik met RS("xxx") iets uit de database wil lezen dan geeft hij de volgende melding:
code:
1 Kan het item niet vinden in de collectie die overeenkomt met de gewenste naam of het gewenste nummer.
Maar de naam is zeker weten goed, want als ik de SQL_STRING vervangt door:
code:
1 SQL_STRING = "SELECT * FROM PersoneelGegevens ORDER BY Gebruikersnaam"
Dan geeft hij wel alles netjes!
Je selecteert gewoon een 0 en een 1.
Dus, de output van je query ziet er bv zo uit:
code:
1
2
3
4
5
6
7
| 0 0 0 1 1 1 1 |
Je moet dus ook nog de kolommen die je nodig hebt selecteren, die 0 en die 1 worden enkel gebruikt voor de sortering
code:
1
| ORDER BY 1 |
sorteert op het eerste veld.
(Misschien even een SQL tutorial/boek te hand nemen?)
https://fgheysels.github.io/
Je zou zoiets als dit kunnen doen
select username as veld1 , isnull(username,'1') as veld 2 from users order by veld2,veld1
Zoiets werkt volgens mij wel.
select username as veld1 , isnull(username,'1') as veld 2 from users order by veld2,veld1
Zoiets werkt volgens mij wel.
Pagina: 1