Problème requête MySQL
Masterjm
-
Reivax962 Messages postés 3742 Statut Membre -
Reivax962 Messages postés 3742 Statut Membre -
Bonjour,
J'ai un problème avec une requête SQL. Elle fonctionne parfaitement en local avec un MySQL 4.1.9, par contre pas du tout en MySQL 3.23. Voici la requête et le message d'erreur :
SELECT m.id_membre, nom_membre, prenom_membre, id_droit
FROM membres m
INNER JOIN droits_membres d ON m.id_membre = d.id_membre
WHERE id_droit =3
AND (
SELECT COUNT( * )
FROM membres mm
INNER JOIN droits_membres dd ON mm.id_membre = dd.id_membre
WHERE id_droit <>1
AND dd.id_membre = d.id_membre
) =1
ORDER BY nom_membre
MySQL a répondu :
#1064 - Something is wrong in your syntax près de 'SELECT COUNT( * ) FROM membres mm INNER JOIN droits_membres dd' à la ligne 1
Quelqu'un comprend pourquoi cette erreur ?
Je vous remercie pour votre aide !
J'ai un problème avec une requête SQL. Elle fonctionne parfaitement en local avec un MySQL 4.1.9, par contre pas du tout en MySQL 3.23. Voici la requête et le message d'erreur :
SELECT m.id_membre, nom_membre, prenom_membre, id_droit
FROM membres m
INNER JOIN droits_membres d ON m.id_membre = d.id_membre
WHERE id_droit =3
AND (
SELECT COUNT( * )
FROM membres mm
INNER JOIN droits_membres dd ON mm.id_membre = dd.id_membre
WHERE id_droit <>1
AND dd.id_membre = d.id_membre
) =1
ORDER BY nom_membre
MySQL a répondu :
#1064 - Something is wrong in your syntax près de 'SELECT COUNT( * ) FROM membres mm INNER JOIN droits_membres dd' à la ligne 1
Quelqu'un comprend pourquoi cette erreur ?
Je vous remercie pour votre aide !
A voir également:
- Problème requête MySQL
- Mysql community download - Télécharger - Bases de données
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Java
- Mysql a répondu : documentation connexion impossible : paramètres incorrects. - Forum Bases de données
- L'opérateur ou l'administrateur a refusé la requête ✓ - Forum Windows
- Erreur d'exécution de la requete erreur inconnue - Forum Framework .NET
1 réponse
salut,
'dd.id_membre = d.id_membre' ne pouvait fonctionner et il est inutile puisque c'est ta jointure.
pour le reste je préfère citer les champs nommément plutôt que d'utiliser un alias d'autant que ta requête est très courte.
si tu veux juste obtenir le nombre et le tri effectue la requête sur 'membres.nom_membre' plutôt que sur l'ensemble.
moi j'ai l'habitude de coder les champs et tables ainsi 'champ'.
SELECT COUNT( * ) FROM membres INNER JOIN droits_membres ON membres.id_membre = droits_membres.id_membre WHERE membres.id_droit <>1 ORDER BY membres.nom_membre
'dd.id_membre = d.id_membre' ne pouvait fonctionner et il est inutile puisque c'est ta jointure.
pour le reste je préfère citer les champs nommément plutôt que d'utiliser un alias d'autant que ta requête est très courte.
si tu veux juste obtenir le nombre et le tri effectue la requête sur 'membres.nom_membre' plutôt que sur l'ensemble.
moi j'ai l'habitude de coder les champs et tables ainsi 'champ'.
Sur MySQL 4.1.9, il fonctionne étant donné que d.id_membre ne fait pas référence au même enregistrement que dd.id_membre (d.id_membre étant celui de la jointure de la requête mère, dd étant l'alias de la sous requête).
J'ai essayé en mettant ta solution, malheureusement je reçois toujours le même message d'erreur qu'auparavant. Je pense qu'il y a un problème avec la sous-requête, il l'accepte pas. Je peux contourner en allant chercher la valeur du count avant en la stockant dans une variable PHP, mais j'aurais aimé avoir une solution plus "propre". Merci pour ton aide !!
En version 3.x, elles n'existaient pas.
Donc, j'en suis désolé, mais tu devras utiliser ta version "pas propre" pour être compatible avec mysql 3.x
Xavier