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

pourquoi cette requête ne fonctionne pas ?

1 réponse
Avatar
JC
Bonjour

Je ne comprends pas pourquoi ma requ=EAte SQL ne marche pas. Je suppose
que =E7a vient de moi, mais j=92aimerais qu=92on m=92explique mon erreur.

Mon projet g=E9re des diapositives num=E9ris=E9es auxquelles j=92associe de=
s
mots-cl=E9s. Une photo a plusieurs mots-cl=E9s, et un mot-cl=E9 a plusieurs
photos.

L=92analyse du projet est la suivante :
Diapositives (Num=E9ro, Titre) 0,n--->1,1 Diapositive_MotCl=E9 (UnMot,
Num=E9ro_Diapositive, IDDiapositive_Motcl=E9) 1,1 <----0,n MotCl=E9
(UnMotCl=E9)

Cl=E9s :
- Diapositives : Num=E9ro (cl=E9 num=E9rique unique)
- Diapositive_MotCl=E9 : UnMot (cl=E9 texte avec doublons),
Num=E9ro_Diapositive (cl=E9 num=E9rique avec doublons), IDDiapositive_Motcl=
=E9
(cl=E9 compos=E9e UnMot+Num=E9ro_Diapositive)
- MotCl=E9 : UnMotCl=E9 (cl=E9 texte unique)

La requ=EAte ci-dessous fonctionne tr=E8s bien. Elle me renvoie bien
toutes les diapositives qui ont un mot-cl=E9 contenant =91en=92, comme =AB
renard =BB, =AB jument =BB, etc.
SELECT
Diapositive.Num=E9ro AS Num=E9ro,
Diapositive.Titre AS Titre,
Diapositive_MotCl=E9.UnMot AS UnMot,
MotCl=E9.UnMotCl=E9 AS UnMotCl=E9
FROM
Diapositive,
Diapositive_MotCl=E9,
MotCl=E9
WHERE
Diapositive_MotCl=E9.Num=E9ro_Diapositive =3D Diapositive.Num=E9ro
AND Diapositive_MotCl=E9.UnMot =3D MotCl=E9.UnMotCl=E9
AND
(
Diapositive_MotCl=E9.UnMot LIKE '%en%'
)


Par contre, la requ=EAte ci-dessous ne renvoie aucun r=E9sultat.
Pourquoi ??? La d=E9marche est la m=EAme que ci-dessus, sauf que je
s=E9lectionne directement dans le fichier MotCl=E9 plut=F4t que dans le
fichier de liaison. (pour info, seule la ligne avec LIKE est
diff=E9rente)
SELECT
Diapositive.Num=E9ro AS Num=E9ro,
Diapositive.Titre AS Titre,
Diapositive_MotCl=E9.UnMot AS UnMot,
MotCl=E9.UnMotCl=E9 AS UnMotCl=E9
FROM
Diapositive,
Diapositive_MotCl=E9,
MotCl=E9
WHERE
Diapositive_MotCl=E9.Num=E9ro_Diapositive =3D Diapositive.Num=E9ro
AND Diapositive_MotCl=E9.UnMot =3D MotCl=E9.UnMotCl=E9
AND
(
MotCl=E9.UnMotCl=E9 LIKE '%en%'
)


Si vous pouvez m=92expliquer o=F9 est l=92erreur, j=92apprendrai beaucoup j=
e
crois. Est-ce moi ? est-ce SQL ? est-ce Windev (version 12) ?

Merci d'avance

1 réponse

Avatar
patrice
a priori ca devrai
maintenant , peut etre vérifier si y'a pas une histoire d'indifférence au
minuscule qui serait pas la meme selon les clé
au pire, pendre un requeteur sql qqelconque (différent de windev) et le
lancer sur la base sql pour voir comment ca se comporte.

"JC" a écrit dans le message de
news:
Bonjour

Je ne comprends pas pourquoi ma requête SQL ne marche pas. Je suppose
que ça vient de moi, mais j’aimerais qu’on m’explique mon erreur.

Mon projet gére des diapositives numérisées auxquelles j’associe des
mots-clés. Une photo a plusieurs mots-clés, et un mot-clé a plusieurs
photos.

L’analyse du projet est la suivante :
Diapositives (Numéro, Titre) 0,n--->1,1 Diapositive_MotClé (UnMot,
Numéro_Diapositive, IDDiapositive_Motclé) 1,1 <----0,n MotClé
(UnMotClé)

Clés :
- Diapositives : Numéro (clé numérique unique)
- Diapositive_MotClé : UnMot (clé texte avec doublons),
Numéro_Diapositive (clé numérique avec doublons), IDDiapositive_Motclé
(clé composée UnMot+Numéro_Diapositive)
- MotClé : UnMotClé (clé texte unique)

La requête ci-dessous fonctionne très bien. Elle me renvoie bien
toutes les diapositives qui ont un mot-clé contenant ‘en’, comme «
renard », « jument », etc.
SELECT
Diapositive.Numéro AS Numéro,
Diapositive.Titre AS Titre,
Diapositive_MotClé.UnMot AS UnMot,
MotClé.UnMotClé AS UnMotClé
FROM
Diapositive,
Diapositive_MotClé,
MotClé
WHERE
Diapositive_MotClé.Numéro_Diapositive = Diapositive.Numéro
AND Diapositive_MotClé.UnMot = MotClé.UnMotClé
AND
(
Diapositive_MotClé.UnMot LIKE '%en%'
)


Par contre, la requête ci-dessous ne renvoie aucun résultat.
Pourquoi ??? La démarche est la même que ci-dessus, sauf que je
sélectionne directement dans le fichier MotClé plutôt que dans le
fichier de liaison. (pour info, seule la ligne avec LIKE est
différente)
SELECT
Diapositive.Numéro AS Numéro,
Diapositive.Titre AS Titre,
Diapositive_MotClé.UnMot AS UnMot,
MotClé.UnMotClé AS UnMotClé
FROM
Diapositive,
Diapositive_MotClé,
MotClé
WHERE
Diapositive_MotClé.Numéro_Diapositive = Diapositive.Numéro
AND Diapositive_MotClé.UnMot = MotClé.UnMotClé
AND
(
MotClé.UnMotClé LIKE '%en%'
)


Si vous pouvez m’expliquer où est l’erreur, j’apprendrai beaucoup je
crois. Est-ce moi ? est-ce SQL ? est-ce Windev (version 12) ?

Merci d'avance