Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD7.5] Requete Sql Incompatibilité entre Not Like et Order By

6 réponses
Avatar
Jean Cougnaud
Bonjour,

Dans une requète Sql j'ai un plantage dans WD75SQL (version 7.5.0.3) lors
d'utilisation conjointe d'un Not Like '...' avec un Order By.
Si je fais avec une sous requète cela fonctionne

Si on utilise un Like et un order By cela fonctionne.

Y a-t-il un petit souci à ce sujet ?

Je travaille avec des fichiers HF7.

Voici ma requète :

Select CLIENTS.NOM as Client_Nom,
RESERVATIONS.IdResa as Resa_Numero
from clients, reservations Where clients.Nom Not like 'C%'
AND Clients.IdClients=RESERVATIONS.IdClients
order by Reservations.IdResa asc

Avec une sous-requète :

Select CLIENTS.NOM as Client_Nom,
RESERVATIONS.IdResa as Resa_Numero
from clients, reservations Where clients.IdClients not in (select
clients.idclients from clients where
clients.Nom like 'C%' )
AND Clients.IdClients=RESERVATIONS.IdClients
order by Reservations.IdResa asc

Merci d'avance

Jean

6 réponses

Avatar
mat
Jean Cougnaud wrote:
Bonjour,

Dans une requète Sql j'ai un plantage dans WD75SQL (version 7.5.0.3) lors
d'utilisation conjointe d'un Not Like '...' avec un Order By.
Si je fais avec une sous requète cela fonctionne

Si on utilise un Like et un order By cela fonctionne.

Y a-t-il un petit souci à ce sujet ?

Je travaille avec des fichiers HF7.

Voici ma requète :

Select CLIENTS.NOM as Client_Nom,
RESERVATIONS.IdResa as Resa_Numero
from clients, reservations Where clients.Nom Not like 'C%'
AND Clients.IdClients=RESERVATIONS.IdClients
order by Reservations.IdResa asc



Je ne sais pas si c'est la réponse mais normalement on devrait utiliser
les alias, une fois déclarés... donc Resa_Numero au lieu de
Reservations.IDresa.
Avatar
Jean Cougnaud
Bonjour,

J'ai essayé de ne mettre que le nom des alias et cela donne la même erreur
"Erreur interne à la Dll WdSql".

Select CLIENTS.NOM as Client_Nom,
RESERVATIONS.IdResa as Resa_Numero,
Clients.IdClients as Client_No,
Reservations.IdClients as Resa_No_Client
from clients, reservations Where Client_Nom Not like 'C%'
AND Client_No=Resa_No_Client
order by Resa_Numero asc

Merci de ta suggestion.

Jean

"mat" a écrit dans le message de
news:40d95a92$
Jean Cougnaud wrote:
> Bonjour,
>
> Dans une requète Sql j'ai un plantage dans WD75SQL (version 7.5.0.3)


lors
> d'utilisation conjointe d'un Not Like '...' avec un Order By.
> Si je fais avec une sous requète cela fonctionne
>
> Si on utilise un Like et un order By cela fonctionne.
>
> Y a-t-il un petit souci à ce sujet ?
>
> Je travaille avec des fichiers HF7.
>
> Voici ma requète :
>
> Select CLIENTS.NOM as Client_Nom,
> RESERVATIONS.IdResa as Resa_Numero
> from clients, reservations Where clients.Nom Not like 'C%'
> AND Clients.IdClients=RESERVATIONS.IdClients
> order by Reservations.IdResa asc

Je ne sais pas si c'est la réponse mais normalement on devrait utiliser
les alias, une fois déclarés... donc Resa_Numero au lieu de
Reservations.IDresa.


Avatar
mat
Jean Cougnaud wrote:
Bonjour,

J'ai essayé de ne mettre que le nom des alias et cela donne la même erreur
"Erreur interne à la Dll WdSql".



Aah, celui-ci je l'ai eu régulièrement ces derniers temps... Souvent
quand je compare une valeur numérique (mais l'erreur n'est pas générée
avec toutes ces valeurs....). Généralement, pas d'erreur dans le code,
tout simplement WD/HF n'aime pas la syntaxe telle qu'elle est. Une
sous-requête résoud cette situation. Des fois j'ai ajouté une condition
bidon, qui sera certainement rempli, p.ex. "Client_No <> 0" après "AND
Client_No=Resa_No_Client", ou quelque chose de similaire... pas très
logique, n'est-ce pas?
Avatar
Jean Cougnaud
J'ai essayé de mettre Client_No<>0 , il ne plante pas mais la requète ne me
renvoie rien.

J'ai mis Client_No=7 et là il me renvoie quelque chose. ? ? ?

Je crois que je vais faire des sous-requètes. Ce sera plus sûres mais est-ce
que cela ne va pas pénaliser le temps de réponse ?

Merci

Jean


"mat" a écrit dans le message de
news:
Jean Cougnaud wrote:
> Bonjour,
>
> J'ai essayé de ne mettre que le nom des alias et cela donne la même


erreur
> "Erreur interne à la Dll WdSql".

Aah, celui-ci je l'ai eu régulièrement ces derniers temps... Souvent
quand je compare une valeur numérique (mais l'erreur n'est pas générée
avec toutes ces valeurs....). Généralement, pas d'erreur dans le code,
tout simplement WD/HF n'aime pas la syntaxe telle qu'elle est. Une
sous-requête résoud cette situation. Des fois j'ai ajouté une condition
bidon, qui sera certainement rempli, p.ex. "Client_No <> 0" après "AND
Client_No=Resa_No_Client", ou quelque chose de similaire... pas très
logique, n'est-ce pas?


Avatar
mat
Jean Cougnaud wrote:
J'ai essayé de mettre Client_No<>0 , il ne plante pas mais la requète ne me
renvoie rien.


Ce n'est pas normal, j'essayerais le type de requête suivant. Je crois
HF n'aime pas trop des liaisons par WHERE.

SELECT Clients.Nom AS Client_Nom,
Resevations.IdResa AS Resa_Numero,
Clients.IdClients AS Client_No,
Reservations.IdClients AS Resa_No_Client
FROM Clients INNER JOIN Reservations
ON Clients.Client_No = Reservations.Resa_No_Client
WHERE Client_Nom Not like 'C%'
ORDER BY Resa_Numero


Je crois que je vais faire des sous-requètes. Ce sera plus sûres mais est-ce
que cela ne va pas pénaliser le temps de réponse ?



Généralement, je trouve que les sous-requêtes sont très efficaces sur HF
(j'utilise surtout des IN pour la sélection).
Avatar
Jean Cougnaud
Bonjour,

Je viens d'essayer et le résultat est le même.

Je pense réellement que c'est un problème de Windev. Si j'enlève le NOT cela
fonctionne et si je le mets cela plante.

On va utiliser des sous-requètes cela sera plus sûr.

Merci pour les conseils.

Jean


"mat" a écrit dans le message de
news:40da9ac5$
Jean Cougnaud wrote:
> J'ai essayé de mettre Client_No<>0 , il ne plante pas mais la requète ne


me
> renvoie rien.
Ce n'est pas normal, j'essayerais le type de requête suivant. Je crois
HF n'aime pas trop des liaisons par WHERE.

SELECT Clients.Nom AS Client_Nom,
Resevations.IdResa AS Resa_Numero,
Clients.IdClients AS Client_No,
Reservations.IdClients AS Resa_No_Client
FROM Clients INNER JOIN Reservations
ON Clients.Client_No = Reservations.Resa_No_Client
WHERE Client_Nom Not like 'C%'
ORDER BY Resa_Numero


> Je crois que je vais faire des sous-requètes. Ce sera plus sûres mais


est-ce
> que cela ne va pas pénaliser le temps de réponse ?

Généralement, je trouve que les sous-requêtes sont très efficaces sur HF
(j'utilise surtout des IN pour la sélection).