Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Set EngineBehavior 90 - Possible Bug
Message
De
28/03/2005 13:06:16
 
 
À
28/03/2005 02:47:38
Jarid Griesel
The Innovix Technology Group (Pty) Ltd
Johannesburg, Afrique du Sud
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Versions des environnements
Visual FoxPro:
VFP 9
OS:
Windows XP SP2
Network:
Windows XP
Database:
Visual FoxPro
Divers
Thread ID:
00999370
Message ID:
00999488
Vues:
13
>The VFP 9 Help says the following re 9.0 SQL enhancements:
>
>A SELECT … DISTINCT … ORDER BY command will generate an error if the specified ORDER BY field is not in the SELECT field list.
>
>However the followig sql statement generates a "SQL: Order By clause is invalid" error:
>
>SELECT DISTINCT (Sales / 10) as sales FROM saleshist INTO CURSOR test ORDER BY sales
>
>Setting EngineBehavior 80 gets rid of the error condition.
>
>Is is a Bug ?
>
>A work around is:
>
>SELECT DISTINCT (Sales / 10) as Sales1 FROM saleshist INTO CURSOR test ORDER BY sales1
>
>but the workaround is a pain.

This is a bug.
Other examples:
CREATE CURSOR saleshist (sales Y , item C(10) )
INSERT INTO saleshist VALUES (10,"Item 10")
INSERT INTO saleshist VALUES ( 1,"Item 01")

* 1) Result Sales Order 0 ; 1
SELECT sales%10 as sales FROM saleshist ORDER BY 1

* 2) Result Sales Order 1 ; 0
	* you can order for a out of list field
SELECT sales%10 as sales FROM saleshist ORDER BY ITEM
* 3) Result Sales Order 1 ; 0
	* not ambiguous
SELECT sales as x,sales%10 as sales FROM saleshist ORDER BY saleshist.sales

* 4) BUG: Result Sales Order 1 ; 0 Expected 0 ; 1
	* this is ambiguos, correct is the result fieldName ( column 2 )
SELECT sales as x,sales%10 as sales FROM saleshist ORDER BY sales
* 5) Expected Error 
	* impossible order into a field and aggregate into another
SELECT DISTINCT sales FROM saleshist ORDER BY item
* another syntax
SELECT sales FROM saleshist GROUP BY Sales ORDER BY item

* Result Sales Order 1 ; 10
	* this is ambiguos, correct is order the result fieldName ( column 1 )
SELECT DISTINCT sales FROM saleshist ORDER BY sales	
* or
SELECT sales FROM saleshist GROUP BY sales ORDER BY sales	

* Expected Sales Order 0 ; 1
SELECT DISTINCT sales%10 AS sales FROM saleshist ORDER BY 1

* Expected Error
	* this is not ambiguos, but it is like the case 5)
SELECT DISTINCT sales%10 AS sales FROM saleshist ORDER BY saleshist.sales

* BUG: Expected Result Sales Order 0 ; 1
	* this is not ambiguos because VFP cannot use saleshist.sales, then it have to order the Result field
SELECT DISTINCT sales%10 AS sales FROM saleshist ORDER BY sales

* another example
SELECT DISTINCT 1 AS item FROM saleshist ORDER BY sales
However this ambiguity is critical, has found a bug also in MS SQL engine.

Workaround:
SELECT DISTINCT (Sales / 10) as Sales FROM saleshist INTO CURSOR test ORDER BY 1
but on current VFP this is useless because DISTINCT ( as GROUP BY ) return a ordered table
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform