SQL-fout

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik moet een raportje maken in het programma 'lansweeper report builder ' , hierbij maak ik gebruik van SQl

dit is mijn code :

SELECT
tblSoftware.softwareName,
tblSoftware.softwareVersion,
tblSoftware.softwarePublisher,
COUNT (tblSoftware.ComputerName) AS TimesInstalled

FROM
tblSoftware
INNER JOIN tblNetwork ON tblsoftware.computername = tblnetwork.computername

WHERE
tblnetwork.ipaddress like '10.102.208%'
OR tblnetwork.ipaddress like '10.102.0%'

GROUP BY
tblSoftware.softwareName,
tblSoftware.softwareVersion,
tblSoftware.softwarePublisher

ORDER BY
tblsoftware.softwareName


als ik dit wil opslaan krijg ik de volgende foutmelding :

'THE ORDER BY clause is invalid in views ,inline functions ,derived tables ,subqueries, and common table expressions ,unless TOP or FOR XML is also specified

Iemand een idee waaraan dit kan liggen en hoe ik dit kan oplossen ??

thnx Sam
_/-\o_

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:07
Dat ligt aan het feit dat de ORDER BY clause niet mag gebruikt worden in views, inline functies, subqueries, derived tables, en CTE's, tenzij je ook TOP of 'FOR XML' gebruikt ...

maw: begrijpend lezen van de foutmelding, en deze interpreteren voor jouw situatie

Maareh, wat bedoel je met 'als ik dit wil opslaan' ?
Maakt dat tooltje er dan een view van ofzo ? (zoja, dan zal het daaraan liggen).

[ Voor 20% gewijzigd door whoami op 19-08-2009 14:46 ]

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

Niet lullig bedoeld, maar als je die error aan google te eten geeft, kom je'r vast zelf snel uit. :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
;( jah maar zelfs als ik mijn ORDER BY weglaat blijft hij de foutmelding geven .

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10:03

Creepy

Tactical Espionage Splatterer

Het lijkt me heel sterk dat je een foutmelding krijgt over een "ORDER BY" als je echt geen ORDER BY gebruikt. Print eens de volledige query die je code uitvoert en bekijk dan de daadwerkelijke foutmelding nog eens goed. Dan moet waarschijnlijk duidelijk worden wat er nu precies mis is.
(oftewel: ga nu niet alleen je foutmelding + query hier dumpen met de vraag "los het eens voor me op" ;) We verwachten hier iets meer inzet)

[ Voor 32% gewijzigd door Creepy op 19-08-2009 14:55 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 22:55

The Eagle

I wear my sunglasses at night

Als je de code rechtstreeks op de DB uitvoert, lukt het dan wel? Of krijg je dan andere foutmeldingen?
Waar ik aan zit te denken namelijk is dat dat lansweeper gewoon een view aanmaakt bij het opslaan, en dan geeft de SQL server terecht de foutmelding dat dat niet kan.

Andere optie: haal die count eens weg en run hem dan nog eens. Zou me zomaar niks verbazen als er bedoeld wordt dat dat ook niet mag ;)

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Waarom vraag je deze vraag niet op het support forum van Lan Sweeper?

http://www.lansweeper.com/forum/

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

Verwijderd

maak er "select top 100 percent" van

SELECT top 100 percent
tblSoftware.softwareName,
tblSoftware.softwareVersion,
tblSoftware.softwarePublisher,
COUNT (tblSoftware.ComputerName) AS TimesInstalled

FROM
tblSoftware
INNER JOIN tblNetwork ON tblsoftware.computername = tblnetwork.computername

WHERE
tblnetwork.ipaddress like '10.102.208%'
OR tblnetwork.ipaddress like '10.102.0%'

GROUP BY
tblSoftware.softwareName,
tblSoftware.softwareVersion,
tblSoftware.softwarePublisher

ORDER BY
tblsoftware.softwareName

iemand die het kan weten ;)

Acties:
  • 0 Henk 'm!

  • cariolive23
  • Registratie: Januari 2007
  • Laatst online: 18-10-2024
Die is vies!

Maar het werkt wel. Wel vreemd dat SQL Server problemen heeft met de originele query, is geen bijzondere query en wiskundig helemaal correct.

Acties:
  • 0 Henk 'm!

  • Voois
  • Registratie: Augustus 2006
  • Laatst online: 02-02 22:15
En er een select om heen zetten ?

SELECT * FROM (

SELECT
tblSoftware.softwareName,
tblSoftware.softwareVersion,
tblSoftware.softwarePublisher,
COUNT (tblSoftware.ComputerName) AS TimesInstalled

FROM
tblSoftware
INNER JOIN tblNetwork ON tblsoftware.computername = tblnetwork.computername

WHERE
tblnetwork.ipaddress like '10.102.208%'
OR tblnetwork.ipaddress like '10.102.0%'

GROUP BY
tblSoftware.softwareName,
tblSoftware.softwareVersion,
tblSoftware.softwarePublisher

) as tbl1
ORDER BY
tblsoftware.softwareName

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Een order in een view wordt niet ondersteund omdat:
Just as rows in a base table lack any defined ordering, rows available through a view do not appear with any default sorting. A view is a relational table, and the relational model defines a table as a set of rows. Since sets are not ordered - by definition - the rows in a view are not ordered, either. Therefore, an ORDER BY clause in the view definition is meaningless. The SQL standard (SQL:2003) does not allow an ORDER BY clause in a subselect in a CREATE VIEW statement, just as it is not allowed in a CREATE TABLE statement. However, sorted data can be obtained from a view, in the same way as any other table - as part of a query statement. In Oracle 10g, a view can be created with an ORDER BY clause in a subquery.
Als je een TOP X gebruikt (en TOP 100 PERCENT dus ook) wordt een ORDER BY wél ondersteund, maar dat is omdat de view anders niet zou weten wélke X records te returnen (of telkens andere random records :+ ).

Logisch he? ;)

Overigens: @QueryPosters: Gebruik a.u.b. code tags :Y)

[ Voor 5% gewijzigd door RobIII op 19-08-2009 19:36 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • cariolive23
  • Registratie: Januari 2007
  • Laatst online: 18-10-2024
In Oracle 10g, a view can be created with an ORDER BY clause in a subquery.
In PostgreSQL is het evenmin een probleem, zowel in subqueries als in views wordt ORDER BY ondersteund.

Dat het vanuit het oogpunt van een virtuele tabel niets toevoegd, ach, er zijn andere dingen om je druk over te maken. Vanuit het oogpunt van performance is het waarschijnlijk niet handig om een ORDER BY in de VIEW te zetten, voor je het weet ben je meerdere keren aan het sorteren en dan ook nog eens tegengesteld. Sorteren kun je het beste op het laatste moment doen, wanneer je de view aanroept.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
cariolive23 schreef op woensdag 19 augustus 2009 @ 22:03:
[...]

In PostgreSQL is het evenmin een probleem, zowel in subqueries als in views wordt ORDER BY ondersteund.
The SQL standard (SQL:2003) does not allow an ORDER BY clause
Klaar. Als PostgreSQL en Oracle dat wel willen ondersteunen (en dus bewust van de standaard af wijken) moeten ze dat lekker zelf weten.
cariolive23 schreef op woensdag 19 augustus 2009 @ 22:03:
Dat het vanuit het oogpunt van een virtuele tabel niets toevoegd, ach, er zijn andere dingen om je druk over te maken.
Wie maakt zich druk? En het voegt inderdaad niets toe (zonder TOP clause); waarom dan toch ondersteunen? Ik durf zelfs te beweren dat je er slecht/ondoordacht ontwerp mee aanmoedigt.
cariolive23 schreef op woensdag 19 augustus 2009 @ 22:03:
Vanuit het oogpunt van performance is het waarschijnlijk niet handig om een ORDER BY in de VIEW te zetten, voor je het weet ben je meerdere keren aan het sorteren en dan ook nog eens tegengesteld. Sorteren kun je het beste op het laatste moment doen, wanneer je de view aanroept.
Zelfs al kon een order by wel in een view (again, zonder een TOP) dan zal een beetje query optimizer die overbodige sort er wel gauw uit mikken.

[ Voor 5% gewijzigd door RobIII op 19-08-2009 22:11 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • cariolive23
  • Registratie: Januari 2007
  • Laatst online: 18-10-2024
En het voegt inderdaad niets toe (zonder TOP clause); waarom dan toch ondersteunen?
Omdat er blijkbaar vraag naar is of dat het meer moeite kost om het eruit te slopen dan erin te laten zitten. Het zit niemand in de weg.
Ik durf zelfs te beweren dat je er slecht/ondoordacht ontwerp mee aanmoedigt.
En sinds wanneer is dat een argument? Er zijn databases, ik noem geen namen, die dingen doen die helemaal niet kunnen, maar geen haan die daar naar kraait. Dat er vele applicaties bol staan van de bugs, dankzij deze oh zo geweldige database, so be it. Een ORDER BY in een view zie ik wat dat betreft als de engelsen die zonodig links moeten rijden en het stuur aan de rechterkant hebben: het kan. Functioneel maakt het niet uit, ook zij komen daar waar ze zijn moeten. En dat zonder extra ongelukken. (schijnt zelfs veiliger te zijn i.v.m. beter zicht)

Ps. Er is bij mijn weten niet één database die zich volledig aan de SQL-standaarden houdt.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
cariolive23 schreef op woensdag 19 augustus 2009 @ 23:12:
Er zijn databases, ik noem geen namen, die dingen doen die helemaal niet kunnen, maar geen haan die daar naar kraait. Dat er vele applicaties bol staan van de bugs, dankzij deze oh zo geweldige database, so be it.
*Kuch* MySQL? :P
Daar kunnen we wel op blijven ranten; de lol is daar gewoon van af. Vandaar dat er niemand naar kraait ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1