PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Requête SQL sur une rubrique de clés composées
Requête SQL sur une rubrique de clés composées
Iniciado por g.bonnevial, 08,mar. 2020 10:41 - 7 respuestas
Publicado el 08,marzo 2020 - 10:41
Bonjour,
Quelqu'un a-t-il déjà fait une requête (SELECT par exemple) à partir
d'une rubrique composée ? Je ne trouve pas la bonne syntaxe.

sReq est une requete SQL=
[
SELECT * FROM TTest WHERE IDTTestCity={pCleComposee}
]
sReq.pCleComposee= ????

j'ai essayé HConstruitValClé(Id, City)
j'ai essayé (Id, City)

Une réponse ?
Merci
Georges
Miembro registrado
2.321 mensajes
Publicado el 08,marzo 2020 - 17:50
Bonjour,

Ecris ta requête "naturelle" sans te préoccuper des clés composées.

--
Bon dev,
Jean-Pierre
Publicado el 09,marzo 2020 - 11:54
Le 08/03/2020 à 16:50, Jean-Pierre a écrit :
Bonjour,

Ecris ta requête "naturelle" sans te préoccuper des clés composées.

--
Bon dev,
Jean-Pierre

Bonjour,
Merci de ta réponse.
Que veux-tu dire par "naturelle" ?
Si cela veut dire utiliser les différentes rubriques de la clé, quelle
est l'intérêt d'une clé composée ?
Cordialement,
Georges
Miembro registrado
170 mensajes
Publicado el 09,marzo 2020 - 13:29
Bonjour Georges,

Admettons que tu aies à gérer le parc matériel de ta commune. tu aurais une table (fichier) listant tout ton matos :

materiel(num, libelle)

Ce matériel est déplacé de salle communale en salle communale en fonction des besoins de services, => une table(fichier) salles

salle(id, libelle, rue, ...)

et tu veux pouvoir affecter du matériel à une salle à une date donnée : => table(fichier) distribution_du_materiel

distribution_du_materiel(num_materiel, id_salle, date)

En créant une clef composée maClefComposee(id_materiel, id_salle, date) et en spécifiant, par exemple, que cette clef doit être unique, tu t'assures ainsi de l'impossibilité de positionner une table ou une chaise à deux endroits différents pour la même date.

Cela te semble-t-il suffisamment intéressant pour justifier de l'utilisation de clefs composées ?

--
--
Jean-Jacques
Mensaje modificado, 09,marzo 2020 - 13:29
Publicado el 09,marzo 2020 - 14:52
Le 09/03/2020 à 12:29, Padbrain a écrit :
Bonjour Georges,

Admettons que tu aies à gérer le parc matériel de ta commune. tu aurais
une table (fichier) listant tout ton matos :

materiel(num, libelle)

Ce matériel est déplacé de salle communale en salle communale en
fonction des besoins de services, => une table(fichier) salles

salle(id, libelle, rue, ...)

et tu veux pouvoir affecter du matériel à une salle à une date donnée :
=> table(fichier) distribution_du_materiel

distribution_du_materiel(num_materiel, id_salle, date)

En créant une clef composée maClefComposee(id_materiel, id_salle, date)
et en spécifiant, par exemple, que cette clef doit être unique, tu
t'assures ainsi de l'impossibilité de positionner une table ou une
chaise à deux endroits différents pour la même date.

Cela te semble-t-il suffisamment intéressant pour justifier de
l'utilisation de clefs composées ?

--
--
Jean-Jacques

Bonjour,
merci de tes explications.
C'est bien pour ça que j'ai des clés composées.
Mon problème est de comment les renseigner dans une requête SQL en temps
que paramètres ?
Cordialement,
Georges
Miembro registrado
4.362 mensajes
Publicado el 09,marzo 2020 - 15:42
Bonjour,
Comme précisé plus haut, la recherche se fait sur les membres de la clé.

...
WHERE
(TTest.IDCity={pIDCity}
AND
TTest.NomCity={pNom}
)

La création de la clé composé dans ce cas sert à améliorer le temps de recherche, car elle se fera sur les paires (ID,Nom) en ne contrôlant pas les ID qui n'ont pas de nom et vice versa (pour faire simple)
--
Il y a peut être plus simple, mais, ça tourne
Mensaje modificado, 09,marzo 2020 - 15:46
Publicado el 09,marzo 2020 - 18:16
les clés composées sont utilisables en direct dans les ordres hxxx (hfiltre, hlitrecherche, etc...) mais PAS dans les requêtes...

Dans les requetes tu pose tes conditions sur chacun des MEMBRES de la clé composée, et -SI- le moteur SQL décide que la façon la plus rapide de faire le travail est de parcourir la clé composée, il le fera. Il décide ce genre de chose en fonction des champs sur lesquels tu place tes conditions, et des conditions elle mêmes...

Donc, l'intéret des clés composées BIEN CONCUES est de fournir un accès plus rapide à certaines informations... Tu peux grandement accélérer les chose si tu sais ce que tu fais.
Publicado el 10,marzo 2020 - 09:26
Le 09/03/2020 à 17:16, Argus a écrit :
les clés composées sont utilisables en direct dans les ordres hxxx
(hfiltre, hlitrecherche, etc...) mais PAS dans les requêtes...

Dans les requetes tu pose tes conditions sur chacun des MEMBRES de la
clé composée, et -SI- le moteur SQL décide que la façon la plus rapide
de faire le travail est de parcourir la clé composée, il le fera. Il
décide ce genre de chose en fonction des champs sur lesquels tu place
tes conditions, et des conditions elle mêmes...

Donc, l'intéret des clés composées BIEN CONCUES est de fournir un accès
plus rapide à certaines informations... Tu peux grandement accélérer les
chose si tu sais ce que tu fais.

Bonjour,
Merci de votre réponse très claire.
Ce n'est donc pas possible.
Effectivement actuellement j'utilise l'ensemble des composantes de la
rubrique dans mon code SQL.
Bonne journée à tous
Georges