OVH Cloud OVH Cloud

[WD][MySQL]

15 réponses
Avatar
Pascal F
Bonjour,
Voila, j'ai une requête qui fonctionne correctement en HF C/S.
Maintenant je veux tester mon programme avec un accès natif MySQL et j'ai un message d'erreur avec cette requete avec jointure
externe. J'obtiens une erreur 1066: Table/alias DIRIGEANT non unique:
voici la requete:
SELECT DIRIGEANT.Nom_Dir AS Nom_Dir, DIRIGEANT.Prenom_Dir AS Prenom_Dir,
DIRIGEANT.IDDIRIGEANT AS IDDIRIGEANT,
STATUT.Statut AS Statut ,
EMPLOYE.IDDIRIGEANT AS IDEMPLOYE
FROM STATUT INNER JOIN DIRIGEANT ON STATUT.IDSTATUT = DIRIGEANT.IDSTATUT_DIRIGEANT,
DIRIGEANT LEFT OUTER JOIN EMPLOYE ON DIRIGEANT.IDDIRIGEANT = EMPLOYE.IDDIRIGEANT
WHERE EMPLOYE.IDDIRIGEANT=0

Ma table DIRIGEANT est bien unique, je n'ai pas créé d'alias sur cette table. Si je teste la requete avec MyDB Studio j'ai la
même erreur.

Le but de la requete est de retrouver les noms de dirigeant n'étant pas dans le fichier employé, trié par statut.
Ou est mon erreur? Merci d'avance.

--
Pascal
N0.pascal.SPAM@efpe.biz
Ne garder que le prénom pour me joindre

5 réponses

1 2
Avatar
Pascal F
Le 21/02/2006, Daniel a supposé :
"Pascal F" writes:

Firetox a écrit :
vous pouvez aussi essayer la version de gg ca nous montrera si wdSQL
n'accepte pas les alias



Dans ce cas j'ai le message d'erreur : mot LEFT inatendu

Voila. Je précise qu'il s'agit de la version 10F100040k.



Que le SQL supporté par HF soit pas normalisé, ce n'est pas trop
surprenant car il me semble que si c'était le cas il y aurait au moins
une référence à la norme supportée.

Ce que j'espère c'est que le résultat obtenu est le même entre les 2
requêtes.

C'est surprenant que la requête sous HF puisse passer sans alias, c'est un peu
comme si la requête était faite en 2 temps...



Bin le problème est que je n'ai pas le même résultat dans les deux cas. A savoir je veux obtenir les enregistrements de DIRIGEANT
qui n'ont pas d'enregistrements liés dans EMPLOYE (clé etrangère dans EMPLOYE.IDDIRIGEANT).
EN HF je récupère bien les lignes correspondantes, en MYSQL je ne récupère aucun enregistrement.

--
Pascal

Ne garder que le prénom pour me joindre
Avatar
ManuPavy
Bonjour,

gg a écrit :
8< 8<
Ma table DIRIGEANT est bien unique, je n'ai pas créé d'alias sur cette
table. Si je teste la requete avec MyDB Studio j'ai la même erreur.

Le but de la requete est de retrouver les noms de dirigeant n'étant
pas dans le fichier employé, trié par statut.
Ou est mon erreur? Merci d'avance.




Bonjour,

Comme cela ca ne fonctionne pas mieux ?

SELECT DIRIGEANT.Nom_Dir AS Nom_Dir, DIRIGEANT.Prenom_Dir AS Prenom_Dir,
DIRIGEANT.IDDIRIGEANT AS IDDIRIGEANT,
STATUT.Statut AS Statut ,
EMPLOYE.IDDIRIGEANT AS IDEMPLOYE
FROM STATUT INNER JOIN DIRIGEANT ON STATUT.IDSTATUT =
DIRIGEANT.IDSTATUT_DIRIGEANT
LEFT OUTER JOIN EMPLOYE ON DIRIGEANT.IDDIRIGEANT > EMPLOYE.IDDIRIGEANT
WHERE EMPLOYE.IDDIRIGEANT=0



la condition dans le where me semble inadapté ; il faudrait plutot avoir

... WHERE EMPLOYE.IDDIRIGEANT IS NULL

car en testant " = 0", on cherche les enregistrement dont la clé a pour
valeur "0" et non "inexistant" ou null

Dans tous les cas, le mieux est de toujours essayer sa requete dans un
client MySQL (genre MySQL CC ou autre) avant de l'implémenter dans son code.

Manu
Avatar
Firetox
Bonjour,

SELECT
DIRIGEANT.Nom_Dir AS Nom_Dir,
DIRIGEANT.Prenom_Dir AS Prenom_Dir,
DIRIGEANT.IDDIRIGEANT AS IDDIRIGEANT,
STATUT.Statut AS Statut ,
EMPLOYE.IDDIRIGEANT AS IDEMPLOYE

FROM DIRIGEANT JOIN STATUT
ON STATUT.IDSTATUT = DIRIGEANT.IDSTATUT_DIRIGEANT

LEFT JOIN EMPLOYE
ON DIRIGEANT.IDDIRIGEANT = EMPLOYE.IDDIRIGEANT

WHERE EMPLOYE.IDDIRIGEANT is NULL

renvoie les dirigeants , avec leur status qui n'ont pas d'employes, va
renvoyer NULL dans la colonne employe.dirigeant pour les dirigeant n'ayant
pas d'employés et non 0





"Pascal F" a écrit dans le message de news:
43fb03c3$0$4397$
Le 21/02/2006, Daniel a supposé :
"Pascal F" writes:

Firetox a écrit :
vous pouvez aussi essayer la version de gg ca nous montrera si wdSQL
n'accepte pas les alias



Dans ce cas j'ai le message d'erreur : mot LEFT inatendu

Voila. Je précise qu'il s'agit de la version 10F100040k.



Que le SQL supporté par HF soit pas normalisé, ce n'est pas trop
surprenant car il me semble que si c'était le cas il y aurait au moins
une référence à la norme supportée.

Ce que j'espère c'est que le résultat obtenu est le même entre les 2
requêtes.

C'est surprenant que la requête sous HF puisse passer sans alias, c'est
un peu
comme si la requête était faite en 2 temps...



Bin le problème est que je n'ai pas le même résultat dans les deux cas. A
savoir je veux obtenir les enregistrements de DIRIGEANT qui n'ont pas
d'enregistrements liés dans EMPLOYE (clé etrangère dans
EMPLOYE.IDDIRIGEANT).
EN HF je récupère bien les lignes correspondantes, en MYSQL je ne récupère
aucun enregistrement.

--
Pascal

Ne garder que le prénom pour me joindre




Avatar
Pascal F
Le 21/02/2006, ManuPavy a supposé :
Bonjour,

gg a écrit :
8< 8<
Ma table DIRIGEANT est bien unique, je n'ai pas créé d'alias sur cette table. Si je teste la requete avec MyDB Studio j'ai
la même erreur.

Le but de la requete est de retrouver les noms de dirigeant n'étant pas dans le fichier employé, trié par statut.
Ou est mon erreur? Merci d'avance.




Bonjour,

Comme cela ca ne fonctionne pas mieux ?

SELECT DIRIGEANT.Nom_Dir AS Nom_Dir, DIRIGEANT.Prenom_Dir AS Prenom_Dir,
DIRIGEANT.IDDIRIGEANT AS IDDIRIGEANT,
STATUT.Statut AS Statut ,
EMPLOYE.IDDIRIGEANT AS IDEMPLOYE
FROM STATUT INNER JOIN DIRIGEANT ON STATUT.IDSTATUT = DIRIGEANT.IDSTATUT_DIRIGEANT
LEFT OUTER JOIN EMPLOYE ON DIRIGEANT.IDDIRIGEANT >> EMPLOYE.IDDIRIGEANT
WHERE EMPLOYE.IDDIRIGEANT=0



la condition dans le where me semble inadapté ; il faudrait plutot avoir

... WHERE EMPLOYE.IDDIRIGEANT IS NULL

car en testant " = 0", on cherche les enregistrement dont la clé a pour valeur "0" et non "inexistant" ou null

Dans tous les cas, le mieux est de toujours essayer sa requete dans un client MySQL (genre MySQL CC ou autre) avant de
l'implémenter dans son code.

Manu



Merci à tous pour vos réponses

--
Pascal

Ne garder que le prénom pour me joindre
Avatar
Daniel
"Pascal F" writes:

Le 21/02/2006, Daniel a supposé :
> "Pascal F" writes:
>
>> Firetox a écrit :
>>> vous pouvez aussi essayer la version de gg ca nous montrera si
>>>wdSQL n'accepte pas les alias
>>>
>> Dans ce cas j'ai le message d'erreur : mot LEFT inatendu Voila. Je
>>précise qu'il s'agit de la version 10F100040k.
>>
> Que le SQL supporté par HF soit pas normalisé, ce n'est pas trop
>surprenant car il me semble que si c'était le cas il y aurait au
>moins une référence à la norme supportée.
>
> Ce que j'espère c'est que le résultat obtenu est le même entre le s 2
>requêtes.
>
> C'est surprenant que la requête sous HF puisse passer sans alias,
>c'est un peu comme si la requête était faite en 2 temps...

Bin le problème est que je n'ai pas le même résultat dans les deux
cas. A savoir je veux obtenir les enregistrements de DIRIGEANT qui
n'ont pas d'enregistrements liés dans EMPLOYE (clé etrangère dans
EMPLOYE.IDDIRIGEANT). EN HF je récupère bien les lignes
correspondantes, en MYSQL je ne récupère aucun enregistrement.




faire une jointure à gauche

select A.* from dirigeant A left join employe B on A.iddirigeant=B.iddiri geant where B.iddirigeant is null




--
Pascal

Ne garder que le prénom pour me joindre





--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
1 2