[SQL] Incorrect syntax near ')', maar ik zie het niet...

Pagina: 1
Acties:
  • 609 views sinds 30-01-2008
  • Reageer

  • haroldd
  • Registratie: April 2004
  • Laatst online: 22-03 21:11
ik heb 2 nieuwstabellen en nou wil ik op de homepage de laatste 5 nieuwe berichten laten zien. dus ik selecteer de berichten uit de beide tabellen (het union-gedeelte) en dit gaat ook goed (ik krijg de laatste 10 berichten dan ook te zien). Nou wil ik echter van het uniongedeelte alleen de bovenste 5 resultaten dus heb ik er een select boven gezegd. ik krijg dan echter de error :
Incorrect syntax near ')'.
/map/map/bestand.asp, line 72
regel 72 is de regel waar de recordset wordt geopend. en ik zie niet in wat ik verkeerd heb genoteerd :s

Ik gebruik MSSQL server.

code:
1
2
3
4
5
6
7
8
9
10
11
        strSql = ""
    strSql = strSql & " select top 5 * from ("
    strSql = strSql & " select top 5 veld1,veld2,veld3"
    strSql = strSql & " from " & strNieuwstabel1
    strSql = strSql & " where DatumIn<=" & dblNu
    strSql = strSql & " and DatumUit>" & dblNu
    strSql = strSql & " union"
    strSql = strSql & " select top 5 veld1,veld2,veld3"
    strSql = strSql & " from " & strNieuwstabel2
    strSql = strSql & " where Datum<=" & dblNu
    strSql = strSql & ")"

Werken is gezond, laat het daarom over aan de zieken!


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

en wat zit er uiteindelijk in strSql?

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Je moet een derived table een alias meegeven. Een derived table is een select als tabel gebruiken.

code:
1
strSql = strSql & ") A"


In dit geval is de letter A het alias voor de derived table.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • haroldd
  • Registratie: April 2004
  • Laatst online: 22-03 21:11
Erkens schreef op dinsdag 28 juni 2005 @ 13:24:
en wat zit er uiteindelijk in strSql?
select top 5 * from ( select top 5 veld1,veld2,veld3 from nieuwstabel1 where DatumIn<=38531 and DatumUit>38531 union select top 5 veld 1,veld2,veld3 from nieuwstabel2)

Werken is gezond, laat het daarom over aan de zieken!


  • haroldd
  • Registratie: April 2004
  • Laatst online: 22-03 21:11
P_de_B schreef op dinsdag 28 juni 2005 @ 13:25:
Je moet een derived table een alias meegeven. Een derived table is een select als tabel gebruiken.

code:
1
strSql = strSql & ") A"


In dit geval is de letter A het alias voor de derived table.
verrek dit werkt :)
nu maar eens gaan uitzoeken waarvoor het nodig is. Bedankt iig :D

Werken is gezond, laat het daarom over aan de zieken!


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
haroldd schreef op dinsdag 28 juni 2005 @ 13:31:
[...]

nu maar eens gaan uitzoeken waarvoor het nodig is.
Zoals ik al zei is het verplicht :)

Overigens heb je geen ORDER BY clausule in combinatie met je TOP. Een ORDER BY is logischerwijs altijd noodzakelijk als je TOP gebruikt. Anders weet je nooit welke 5 records terugkomen. In jou geval wil je graag de laatste 5 records, dus zul je aflopend op 'datum toegevoegd' moeten sorteren.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • haroldd
  • Registratie: April 2004
  • Laatst online: 22-03 21:11
P_de_B schreef op dinsdag 28 juni 2005 @ 13:33:
[...]

Zoals ik al zei is het verplicht :)

Overigens heb je geen ORDER BY clausule in combinatie met je TOP. Een ORDER BY is logischerwijs altijd noodzakelijk als je TOP gebruikt. Anders weet je nooit welke 5 records terugkomen. In jou geval wil je graag de laatste 5 records, dus zul je aflopend op 'datum toegevoegd' moeten sorteren.
ja daar ben ik nu ook mee bezig, maar die had ik net ff weggelaten omdat dat niet relevant was voor m'n foutmelding. Had nog nooit van dat "a"-tje gehoord.

Werken is gezond, laat het daarom over aan de zieken!


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
haroldd schreef op dinsdag 28 juni 2005 @ 13:36:
[...]

Had nog nooit van dat "a"-tje gehoord.
Wellicht ten overvloede, maar het mag alles zijn wat je zelf wilt.*) Het is een naam die je zelf mag kiezen.

*) behalve de zogenaamde gereserveerde keywords

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Yoshi|IA2
  • Registratie: Augustus 2003
  • Laatst online: 10-10-2018
Is een alias verplicht in de SQL standaard, of verplicht in MSSQL?
Ik gebruik normaal altijd aliasses, maar ik meen dat het zonder toch ook werkt in Oracle?

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 16:29

Cyphax

Moderator LNX
Yoshi schreef op dinsdag 28 juni 2005 @ 13:43:
Is een alias verplicht in de SQL standaard, of verplicht in MSSQL?
Ik gebruik normaal altijd aliasses, maar ik meen dat het zonder toch ook werkt in Oracle?
Als je selecteert uit een tabel of een view bijvoorbeeld wel maar die subquery heeft geen naam... daar zal ie wel over vallen. Ik heb met Oracle ook weleens zitten klooien met aliasses voor subqueries maargoed.

Saved by the buoyancy of citrus


  • haroldd
  • Registratie: April 2004
  • Laatst online: 22-03 21:11
P_de_B schreef op dinsdag 28 juni 2005 @ 13:43:
[...]

Wellicht ten overvloede, maar het mag alles zijn wat je zelf wilt.*) Het is een naam die je zelf mag kiezen.

*) behalve de zogenaamde gereserveerde keywords
ah ja, nu snap ik het. is eigenlijk ook wel logisch, je hebt natuurlijk een alias nodig :)

thnx!

Werken is gezond, laat het daarom over aan de zieken!


  • haroldd
  • Registratie: April 2004
  • Laatst online: 22-03 21:11
ik heb trouwens in de eindoplossing de "top" uit de union gehaald, anders krijg ik idd niet de juiste gegevens. dus in de union alles van beide tabellen selecteren en dan van dat resultaat de eerste 5 selecteren.

Werken is gezond, laat het daarom over aan de zieken!

Pagina: 1