OVH Cloud OVH Cloud

Requètes Sql avec des fichiers dBase

2 réponses
Avatar
Jean Cougnaud
Bonjour,

Je sais que les fichiers dBase ne sont pas vraiment des bases de données
mais je voulais faire des requètes Sql dessus et j'ai un petit souci.

Le résultat d'un Select avec un Where dans une sous requète utilisant un
Like ne fonctionne pas correctement.

En général cela me renvoie la totalité du fichier. On dirait qu'un Like dans
une sous-requète ne fonctionne pas

Par exemple :

select * from clts where cvil like'17%'
Fonctionne

et

SELECT ALL CLTS.CNOM AS ClientNom, CLTS.CRU1 AS ClientAdresse1, CLTS.CCLI AS
NoClient, CLTS.CVIL AS ClientCpVille
FROM CLTS
WHERE (CLTS.CAA IN (SELECT CLTS.CAA FROM CLTS WHERE CLTS.CVIL LIKE '17%'))

Ne fonctionne pas

Savez-vous si c'est "normal" ?

Merci d'avance

Jean

2 réponses

Avatar
Côme de Christen
Salut

Il faut en dire un peu plus sur le parser SQL utilisé.
Si c'est le BDE 32 bit de Borland cela devrait passer
si tu enlèves ton ALL derrière le SELECT.

(Exemples tirés du LocalSQL.hlp version Borland) :

SELECT C.company, C.state
FROM customer C
WHERE (C.state IN
(SELECT R.state
FROM regions R
WHERE (R.region = "Pacific")))

SELECT C.company, C.custno
FROM customer C
WHERE EXISTS
(SELECT O.custno
FROM orders O
WHERE (O.custno = C.custno) AND (O.itemstotal > 1000))

SELECT *
FROM "holdings.dbf" H
WHERE (H."pur_price" > ANY
(SELECT O."price"
FROM "old_sales.dbf"))

SELECT *
FROM "holdings.dbf" H
WHERE (H."pur_price" > ALL
(SELECT O."price"
FROM "old_sales.dbf"))

SELECT custno, company
FROM customers
UNION
SELECT custno, company
FROM old_customers

Etc...

"Jean Cougnaud" a écrit dans le message de news:
41a4ca31$0$3073$
Bonjour,

Je sais que les fichiers dBase ne sont pas vraiment des bases de données
mais je voulais faire des requètes Sql dessus et j'ai un petit souci.

Le résultat d'un Select avec un Where dans une sous requète utilisant un
Like ne fonctionne pas correctement.

En général cela me renvoie la totalité du fichier. On dirait qu'un Like dans
une sous-requète ne fonctionne pas

Par exemple :

select * from clts where cvil like'17%'
Fonctionne

et

SELECT ALL CLTS.CNOM AS ClientNom, CLTS.CRU1 AS ClientAdresse1, CLTS.CCLI AS
NoClient, CLTS.CVIL AS ClientCpVille
FROM CLTS
WHERE (CLTS.CAA IN (SELECT CLTS.CAA FROM CLTS WHERE CLTS.CVIL LIKE '17%'))

Ne fonctionne pas

Savez-vous si c'est "normal" ?

Merci d'avance

Jean


Avatar
Jean Cougnaud
Bonjour,

J'utilise le driver Odbc Microsoft mais je crois que j'ai surtout un
problème de clé .

Je vais y regarder un peu mieux.

Merci de t'être intéressé à mon problème.

Jean

"Côme de Christen" a écrit dans le message de
news:41a5a1b1$0$6015$
Salut

Il faut en dire un peu plus sur le parser SQL utilisé.
Si c'est le BDE 32 bit de Borland cela devrait passer
si tu enlèves ton ALL derrière le SELECT.

(Exemples tirés du LocalSQL.hlp version Borland) :

SELECT C.company, C.state
FROM customer C
WHERE (C.state IN
(SELECT R.state
FROM regions R
WHERE (R.region = "Pacific")))

SELECT C.company, C.custno
FROM customer C
WHERE EXISTS
(SELECT O.custno
FROM orders O
WHERE (O.custno = C.custno) AND (O.itemstotal > 1000))

SELECT *
FROM "holdings.dbf" H
WHERE (H."pur_price" > ANY
(SELECT O."price"
FROM "old_sales.dbf"))

SELECT *
FROM "holdings.dbf" H
WHERE (H."pur_price" > ALL
(SELECT O."price"
FROM "old_sales.dbf"))

SELECT custno, company
FROM customers
UNION
SELECT custno, company
FROM old_customers

Etc...

"Jean Cougnaud" a écrit dans le message de


news:
41a4ca31$0$3073$
> Bonjour,
>
> Je sais que les fichiers dBase ne sont pas vraiment des bases de données
> mais je voulais faire des requètes Sql dessus et j'ai un petit souci.
>
> Le résultat d'un Select avec un Where dans une sous requète utilisant un
> Like ne fonctionne pas correctement.
>
> En général cela me renvoie la totalité du fichier. On dirait qu'un Like


dans
> une sous-requète ne fonctionne pas
>
> Par exemple :
>
> select * from clts where cvil like'17%'
> Fonctionne
>
> et
>
> SELECT ALL CLTS.CNOM AS ClientNom, CLTS.CRU1 AS ClientAdresse1,


CLTS.CCLI AS
> NoClient, CLTS.CVIL AS ClientCpVille
> FROM CLTS
> WHERE (CLTS.CAA IN (SELECT CLTS.CAA FROM CLTS WHERE CLTS.CVIL LIKE


'17%'))
>
> Ne fonctionne pas
>
> Savez-vous si c'est "normal" ?
>
> Merci d'avance
>
> Jean
>
>