Requête mysql défectueuse
Résolu
Smoking bird
Messages postés
911
Statut
Membre
-
Smoking bird Messages postés 911 Statut Membre -
Smoking bird Messages postés 911 Statut Membre -
Bonjour,
La requête suivante:
Me renvoi l'erreur suivante:
Je ne comprends absolument pas pourquoi. Mon utilisation du case est peut être minable, mais la doc dessus l'est malheureusement encore plus:s et je ne trouve aucun tuto/exemple qui convienne à mon cas -_-'. Quelqu'un saurait il m'aider?
Cordialement,
Smoke
La requête suivante:
select id.ref_cat,rel.ref_bCat,id.nom,id.type,cg.outFocus from cat_id id inner join cat_status as st using (ref_cat) left outer join cat_rel as rel using (ref_cat) case when id.type='b' then inner join bCat_config when id.type='s' then inner join sCat_config end as cg using (ref_cat) where st.status!=0 order by rel.ref_bCat
Me renvoi l'erreur suivante:
MySQL a répondu: #1064 - Erreur de syntaxe près de 'case when id.type='b' then inner join bCat_config when id.type='' à la ligne 5
Je ne comprends absolument pas pourquoi. Mon utilisation du case est peut être minable, mais la doc dessus l'est malheureusement encore plus:s et je ne trouve aucun tuto/exemple qui convienne à mon cas -_-'. Quelqu'un saurait il m'aider?
Cordialement,
Smoke
A voir également:
- Requête mysql défectueuse
- Mysql community download - Télécharger - Bases de données
- Requete sql pix - Forum PHP
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
- Mysql error 2002 ✓ - Forum Linux / Unix
- Erreur de requete facebook - Forum Facebook
6 réponses
Bonjour,
En effet, l'utilisation du case when est inappropriée. la syntaxe du case when exacte est:
Dans ton cas, je pense que cette requête pourrait fonctionner:
En effet, l'utilisation du case when est inappropriée. la syntaxe du case when exacte est:
SELECT
col1,
case
when col2='a' then 'on affiche coucou'
when col2='b' then 'on affiche bonjour'
else 'on affiche autre chose'
end AS 'nom de la colonne'
FROM
table
Dans ton cas, je pense que cette requête pourrait fonctionner:
SELECT
id.ref_cat,
rel.ref_bCat,
id.nom,
id.type,
CASE id.type
WHEN 'b' THEN bcg.outFocus
WHEN 's' THEN scg.outFocus
ELSE 'Erreur'
END AS outFocus
FROM
cat_id id
INNER JOIN cat_status as st using (ref_cat)
LEFT OUTER JOIN cat_rel as rel using (ref_cat)
LEFT JOIN bCat_config bcg using (ref_cat)
LEFT join sCat_config scg using (ref_cat)
WHERE
st.status!=0
ORDER BY
rel.ref_bCat
Merci M@dien de ta réponse, j'ai fini par me résoudre, l'utilisation du case ici est superflue, j'ai fait une requête plus classique, même si je voulais l'utiliser ;).
Il faut savoir également que le CASE WHEN n'est pas l'ami de PERFORMANCE ;)
Niveau performance, attention aussi au LEFT OUTER JOIN qui n'est pas la jointure la plus rapide. Il faut privilégier les simples LEFT JOIN et INNER JOIN. le RIGHT JOIN est intéressant mais déjà un peu plus long.
Bon courage pour la suite
Niveau performance, attention aussi au LEFT OUTER JOIN qui n'est pas la jointure la plus rapide. Il faut privilégier les simples LEFT JOIN et INNER JOIN. le RIGHT JOIN est intéressant mais déjà un peu plus long.
Bon courage pour la suite
okay pour le case when, c'est noté^^
Pour les performances du left outer join, j'y avais pas pensé, mais ça me semble logique. Cela dit, je prends soin de mes tables, j'optimise et j'analyse régulièrement ;)
Quant au right join, j'en suis pas encore au niveau où j'en saisi l'utilité :), mais j'me pencherais forcément un jour dessus^^
Merci pour les infos et à bientôt on CCM^^
Pour les performances du left outer join, j'y avais pas pensé, mais ça me semble logique. Cela dit, je prends soin de mes tables, j'optimise et j'analyse régulièrement ;)
Quant au right join, j'en suis pas encore au niveau où j'en saisi l'utilité :), mais j'me pencherais forcément un jour dessus^^
Merci pour les infos et à bientôt on CCM^^
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question