Les autres réponses ont souligné à juste titre le from
manquant mot-clé et le mauvais ordre des clauses group by
et order by
. Il ne devrait pas y avoir de problème à suivre les conseils que vous avez reçus.
Une autre chose est la syntaxe que vous utilisez pour joindre les tables. Bien que techniquement pas une erreur, il est considéré comme périmé. La nouvelle norme propose des mots-clés dédiés à la jointure, ce qui vous permet de séparer votre logique de jointure de votre logique de filtrage, qui auparavant, selon l'ancienne norme, devait être mélangée dans une clause, la clause WHERE
. Permettez-moi de montrer cela en réécrivant pour vous les clauses FROM
et WHERE
, afin que vous puissiez voir la différence. Tout d'abord, voici votre logique rejoindre la mise en œuvre actuelle:
FROM serialNumber_tbl AS sn,
Entitlement_tbl AS ent,
Company_tbl AS c
WHERE sn.serialNumberId = ent.serialNumberId
AND c.companyId = sn.companyId
Les deux conditions dans la clause WHERE
sont des conditions de jointure. Voici comment le même fragment de code change lorsque vous avez terminé avec la nouvelle syntaxe:
FROM serialNumber_tbl AS sn
INNER JOIN Entitlement_tbl AS ent ON sn.serialNumberId = ent.serialNumberId
INNER JOIN Company_tbl AS c ON c.companyId = sn.companyId
Dans ce cas, la clause WHERE
est parti tout à fait, bien sûr, mais vous ne devriez pas avoir la fausse impression qu'il est toujours comme ça . Généralement, la clause WHERE
reste valide et utile. S'il contenait d'autres conditions qui ne faisaient pas partie de la logique de jointure, elles conserveraient des emplacements dans la clause WHERE
. Je parle de conditions comme ent.Date < '19900101' AND c.CompanyName NOT IN ('IBM', 'Microsoft')
. Comme je l'ai dit plus tôt, avec l'ancienne syntaxe que vous utilisez actuellement, cette condition serait dans une clause avec les conditions de jointure. Dans des cas plus simples, comme le vôtre, il pourrait être négligé sans problème, mais dans des requêtes plus complexes, il pourrait devenir un problème, voire un cauchemar, en termes de maintenabilité. Il est donc important de s'habituer à la nouvelle syntaxe avant de commencer à écrire des requêtes aussi complexes.
Merci! J'ai appris quelque chose de nouveau =) – Donut