[SQL] UNION probleempje

Pagina: 1
Acties:

  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01
Lo.. Heb twee resultsets die het los doen maar met UNION dus niet.

Ik heb 2 tabellen, tblPics en tblSubsets
tblPics.SubsetIDx is hangt aan tblSubset.SubsetID. Logisch gezien de inner join.
De 1ste select geeft aan hoeveel pics er in een bepaalde subset zitten. De tweede select kijkt hoeveel pics er geen subset hebben (subsetidx = null). Nu wil ik die met union aan elkaar knoppen maar dan krijg ik een Incorrect syntax near the keyword 'UNION'.. Toch zijn de datatype goed (althans dat denk ik want ze zijn goed te converteren)

Iemand een idee ?

ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT  s.SubsetID AS SubsetID
        ,s.Subset AS Subset
        ,COUNT(p.SubsetIDx) AS Pictures
        ,(CASE WHEN s.SubsetInfo IS NULL THEN '' END) AS Info
    FROM    tblPics AS p
        right JOIN tblsubsets AS s
            ON p.SubsetIDx = s.SubsetID
    GROUP BY s.SubsetID, s.Subset, s.SubsetInfo
    ORDER BY s.Subset

UNION

SELECT  SubsetID = -1
        ,Subset = '[..]'
        ,count(*) AS Pictures
        ,Info = 'Not in any subsets'
    FROM tblpics
    WHERE subsetidx is null

https://k1600gt.nl


  • whoami
  • Registratie: December 2000
  • Laatst online: 10:17
Doe eens die order by weg....

https://fgheysels.github.io/


  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01
whoami schreef op 30 april 2003 @ 23:08:
Doe eens die order by weg....
Hej, dat werkt..
Ik voel me een beetje dom..

Waarom kan die ORDER BY niet ?

https://k1600gt.nl


  • whoami
  • Registratie: December 2000
  • Laatst online: 10:17
Een ORDER BY moet altijd de laatste clausule zijn in een SELECT.

Ik wist het ook niet zeker dat het daaraan ging liggen, ik had enkel een vermoeden.

Probeer het eens zo (met die order by dus):
code:
1
2
3
4
5
6
7
8
9
10
11
12
(
SELECT blabla
FROM    tabel
WHERE ...
ORDER BY ....
)
UNION
(
SELECT ....
FROM ....
....
)

Let op de haakjes dus. Ben niet zeker of het werkt hoor....

https://fgheysels.github.io/


  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01
whoami schreef op 30 April 2003 @ 23:17:
Een ORDER BY moet altijd de laatste clausule zijn in een SELECT.

Ik wist het ook niet zeker dat het daaraan ging liggen, ik had enkel een vermoeden.

Probeer het eens zo (met die order by dus):
code:
1
  [..]

Let op de haakjes dus. Ben niet zeker of het werkt hoor....
Nee dat werkt niet,
maar omdat je zei dat het de laatste clausule moest zijn heb ik de ORDER BY onder aan gezet als ORDER BY Subset (ipv s.Subset) en dan werkt het voor de hele tabel. Heb het ook even geprobeert op Pictures kolom en dat doet ie ook..

https://k1600gt.nl


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Mocht je trouwens perse dat ene deel eerst willen dan kan je nog zoiets doen:
code:
1
2
3
4
5
6
(
select ..., 1 as prio from ... etc
union
select ..., 2 as prio from ... etc
)
order by prio, etc
Pagina: 1