PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Réaliser une sous-requête sous Windev
Réaliser une sous-requête sous Windev
Débuté par Raoul, 20 juil. 2004 17:39 - 4 réponses
Posté le 20 juillet 2004 - 17:39
Bonjour,
j'essaie de réaliser une sous-requête sous Windev, sachant que ma base de
données est sous SQL Server 2000, par conséquent je sais qu'il n'est pas
possible de réaliser des requêtes de requêtes puisque cela marche uniquement
sous HyperFile,
néanmoins je ne comprends pas pourquoi une simple sous-requête tel que :
SELECT CLIENT.NOM_CLIENT FROM CLIENT WHERE CLIENT.ID = (SELECT PRODUIT.ID_CLIENT,
PRODUIT.ID_PRODUIT FROM PRODUIT WHERE PRODUIT.ID_PRODUIT = 2)

me donne un message d'erreur tel que :
"Erreur d'initialisation de la requête :
Problème d'initialisation de la requete <SOUSREQUETE_0096B610>.
.."

lorsque je la teste sous l'éditeur de requête de Windev,

Est que quelqu'un arrive à faire des sous requêtes?
Merci d'avance
Posté le 20 juillet 2004 - 18:06
"Raoul" <raoul202@hotmail.com> wrote:


Bonjour,
j'essaie de réaliser une sous-requête sous Windev, sachant que ma base de
données est sous SQL Server 2000, par conséquent je sais qu'il n'est pas
possible de réaliser des requêtes de requêtes puisque cela marche uniquement
sous HyperFile,
néanmoins je ne comprends pas pourquoi une simple sous-requête tel que :
SELECT CLIENT.NOM_CLIENT FROM CLIENT WHERE CLIENT.ID = (SELECT PRODUIT.ID_CLIENT,
PRODUIT.ID_PRODUIT FROM PRODUIT WHERE PRODUIT.ID_PRODUIT = 2)

me donne un message d'erreur tel que :
"Erreur d'initialisation de la requête :
Problème d'initialisation de la requete <SOUSREQUETE_0096B610>.
."

lorsque je la teste sous l'éditeur de requête de Windev,

Est que quelqu'un arrive à faire des sous requêtes?
Merci d'avance

Il me semble que cette requête n'est pas correcte : la sous-requête ne doit
renvoyer qu'un seul champ, et la tienne en renvoie deux. De plus, comme tu
utilises l'égalité, la sous-requête ne doit renvoyer qu'une seule valeur,
ce qui n'est pas le cas de ta requête.
J'aurais plutôt écrit:
SELECT CLIENT.NOM_CLIENT FROM CLIENT WHERE CLIENT.ID IN (SELECT PRODUIT.ID_CLIENT
FROM PRODUIT WHERE PRODUIT.ID_PRODUIT = 2)
Ou alors la même sans sous-requête :
SELECT CLIENT.NOM_CLIENT FROM CLIENT,PRODUIT WHERE CLIENT.ID = PRODUIT.ID_CLIENT
AND PRODUIT.ID_PRODUIT = 2

Frédéric.
Posté le 20 juillet 2004 - 18:17
Essayer d'ajouter le paramètre hrequeteSansCorrection

"Raoul" <raoul202@hotmail.com> wrote:


Bonjour,
j'essaie de réaliser une sous-requête sous Windev, sachant que ma base de
données est sous SQL Server 2000, par conséquent je sais qu'il n'est pas
possible de réaliser des requêtes de requêtes puisque cela marche uniquement
sous HyperFile,
néanmoins je ne comprends pas pourquoi une simple sous-requête tel que :
SELECT CLIENT.NOM_CLIENT FROM CLIENT WHERE CLIENT.ID = (SELECT PRODUIT.ID_CLIENT,
PRODUIT.ID_PRODUIT FROM PRODUIT WHERE PRODUIT.ID_PRODUIT = 2)

me donne un message d'erreur tel que :
"Erreur d'initialisation de la requête :
Problème d'initialisation de la requete <SOUSREQUETE_0096B610>.
."

lorsque je la teste sous l'éditeur de requête de Windev,

Est que quelqu'un arrive à faire des sous requêtes?
Merci d'avance
Posté le 20 juillet 2004 - 18:26
En fait, la requête plante directement sous l'éditeur de requêtes, donc à
priori c'est pas la peine d'aller plus loin...

"David CLEMENT" <clement@ch-lons.atrium.rss.fr> wrote:


Essayer d'ajouter le paramètre hrequeteSansCorrection

"Raoul" <raoul202@hotmail.com> wrote:


Bonjour,
j'essaie de réaliser une sous-requête sous Windev, sachant que ma base

de
données est sous SQL Server 2000, par conséquent je sais qu'il n'est pas
possible de réaliser des requêtes de requêtes puisque cela marche uniquement
sous HyperFile,
néanmoins je ne comprends pas pourquoi une simple sous-requête tel que

:
SELECT CLIENT.NOM_CLIENT FROM CLIENT WHERE CLIENT.ID = (SELECT PRODUIT.ID_CLIENT,
PRODUIT.ID_PRODUIT FROM PRODUIT WHERE PRODUIT.ID_PRODUIT = 2)

me donne un message d'erreur tel que :
"Erreur d'initialisation de la requête :
Problème d'initialisation de la requete <SOUSREQUETE_0096B610>.
."

lorsque je la teste sous l'éditeur de requête de Windev,

Est que quelqu'un arrive à faire des sous requêtes?
Merci d'avance

Posté le 20 juillet 2004 - 20:29
Merci Frédéric
La première requête (SELECT CLIENT.NOM_CLIENT FROM CLIENT WHERE CLIENT.ID
IN (SELECT PRODUIT.ID_CLIENT
FROM PRODUIT WHERE PRODUIT.ID_PRODUIT = 2)) fonctionne bien et la 2ieme requête
sans sous-requete ne pose pas de problème,
c'est donc que je ne respectais pas la syntaxe (le IN) et le fait que je
mette plus d'un paramètre à récupérer dans la sous-requête,
donc les sous-requêtes fonctionnent bien...


"Frédéric DEMILLY" <f.demilly@pacificpeche.fr> wrote:


"Raoul" <raoul202@hotmail.com> wrote:


Bonjour,
j'essaie de réaliser une sous-requête sous Windev, sachant que ma base

de
données est sous SQL Server 2000, par conséquent je sais qu'il n'est pas
possible de réaliser des requêtes de requêtes puisque cela marche uniquement
sous HyperFile,
néanmoins je ne comprends pas pourquoi une simple sous-requête tel que

:
SELECT CLIENT.NOM_CLIENT FROM CLIENT WHERE CLIENT.ID = (SELECT PRODUIT.ID_CLIENT,
PRODUIT.ID_PRODUIT FROM PRODUIT WHERE PRODUIT.ID_PRODUIT = 2)

me donne un message d'erreur tel que :
"Erreur d'initialisation de la requête :
Problème d'initialisation de la requete <SOUSREQUETE_0096B610>.
."

lorsque je la teste sous l'éditeur de requête de Windev,

Est que quelqu'un arrive à faire des sous requêtes?
Merci d'avance

Il me semble que cette requête n'est pas correcte : la sous-requête ne doit

renvoyer qu'un seul champ, et la tienne en renvoie deux. De plus, comme

tu
utilises l'égalité, la sous-requête ne doit renvoyer qu'une seule valeur,
ce qui n'est pas le cas de ta requête.
J'aurais plutôt écrit:
SELECT CLIENT.NOM_CLIENT FROM CLIENT WHERE CLIENT.ID IN (SELECT PRODUIT.ID_CLIENT
FROM PRODUIT WHERE PRODUIT.ID_PRODUIT = 2)
Ou alors la même sans sous-requête :
SELECT CLIENT.NOM_CLIENT FROM CLIENT,PRODUIT WHERE CLIENT.ID = PRODUIT.ID_CLIENT
AND PRODUIT.ID_PRODUIT = 2

Frédéric.