Bij mijn applicatie is het mogelijk om aan te geven hoe producten in welke volgorde in een stelling staan.
Artikel met volgorde 1 staat links, volgorde 2 staat daarnaast, enz.....
Nu kan het ook zijn dat een nieuw product is aangemaakt, maar de gebruiker heeft nog niet de volgorde bepaald. Dus bij een nieuwe product, geef ik standaard de volgorde -1.
Nu wil ik via een query alle producten opvragen en dan op volgorde van hoe de gebruiker dat heeft ingevoerd. Dus 1,2,3,4, enz..... en alle producten met volgorde -1 komen als laatste.
Nu heb ik deze query:
Echter dit werkt niet vanwege die order by. Ik heb gekeken in de SQL reference en volgens mij is het onmogelijk om voor de union een order by te plaatsen. Het kan geloof ik alleen helemaal onderaan en je kan dan alleen maar veld nummers weergeven i.p.v. velden.
Weet iemand hoe ik dit op een andere manier wel werkend zou kunnen krijgen?
Artikel met volgorde 1 staat links, volgorde 2 staat daarnaast, enz.....
Nu kan het ook zijn dat een nieuw product is aangemaakt, maar de gebruiker heeft nog niet de volgorde bepaald. Dus bij een nieuwe product, geef ik standaard de volgorde -1.
Nu wil ik via een query alle producten opvragen en dan op volgorde van hoe de gebruiker dat heeft ingevoerd. Dus 1,2,3,4, enz..... en alle producten met volgorde -1 komen als laatste.
Nu heb ik deze query:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| SELECT A.ARTIKELID, AGA.POSITIE, A.INSDATE, A.INSTIME,
A.ARTIKELNAAM, A.MULTIPACK, AM.MULTIPACKNAAM, AM.MULTIPACKINHOUD,
A.ARTIKELINHOUD, A.COLLIEINHOUD, AV.VERPAKKINGAFKORTING, AE.EENHEIDAFKORTING
FROM ARTIKELGROEPARTIKELEN AGA, ARTIKELEN A
LEFT OUTER JOIN ARTIKELMULTIPACK AM ON A.MULTIPACKID=AM.MULTIPACKID
LEFT OUTER JOIN ARTIKELVERPAKKING AV ON A.ARTIKELVERPAKKINGID=AV.VERPAKKINGID
LEFT OUTER JOIN ARTIKELEENHEID AE ON A.ARTIKELEENHEIDID=AE.EENHEIDID
WHERE AGA.ARTIKELID = A.ARTIKELID
AND AGA.ARTIKELGROEPID = 1
AND AGA.POSITIE <> -1
ORDER BY AGA.POSITIE
UNION
SELECT A.ARTIKELID, AGA.POSITIE, A.INSDATE, A.INSTIME,
A.ARTIKELNAAM, A.MULTIPACK, AM.MULTIPACKNAAM, AM.MULTIPACKINHOUD,
A.ARTIKELINHOUD, A.COLLIEINHOUD, AV.VERPAKKINGAFKORTING, AE.EENHEIDAFKORTING
FROM ARTIKELGROEPARTIKELEN AGA, ARTIKELEN A
LEFT OUTER JOIN ARTIKELMULTIPACK AM ON A.MULTIPACKID=AM.MULTIPACKID
LEFT OUTER JOIN ARTIKELVERPAKKING AV ON A.ARTIKELVERPAKKINGID=AV.VERPAKKINGID
LEFT OUTER JOIN ARTIKELEENHEID AE ON A.ARTIKELEENHEIDID=AE.EENHEIDID
WHERE AGA.ARTIKELID = A.ARTIKELID
AND AGA.ARTIKELGROEPID = 1
AND AGA.POSITIE = -1
ORDER BY A.INSDATE, A.INSTIME; |
Echter dit werkt niet vanwege die order by. Ik heb gekeken in de SQL reference en volgens mij is het onmogelijk om voor de union een order by te plaatsen. Het kan geloof ik alleen helemaal onderaan en je kan dan alleen maar veld nummers weergeven i.p.v. velden.
Weet iemand hoe ik dit op een andere manier wel werkend zou kunnen krijgen?