Bonsoir emna,
Il manque une condition de jointure pour votre JOIN :
ON x.localite = y.localite
Par ailleurs, quand vous codez :
SELECT localite, code
Le SGBD veut savoir si c’est la colonne code de la table client ou bien celle de la table commande qui est à considérer : l’ambiguïté est à lever en préfixant le nom de la colonne par un nom de table.
Codez plutôt :
SELECT x.localite, code, x.number, y.number, 100*x.number/y.number
FROM
(SELECT localite, client.code, COUNT(*) as "number"
FROM client, commande
WHERE client.code = commande.code
GROUP BY localite, client.code) as x
JOIN
(SELECT localite, COUNT(*) as "number"
FROM client, commande
WHERE client.code = commande.code
GROUP BY localite) as y
ON x.localite = y.localite
Et pour être dans le sens de l’Histoire :
SELECT x.localite, code, x.number, y.number, 100*x.number/y.number
FROM
(SELECT localite, a.code, COUNT(*) as "number"
FROM client as a join commande as b on a.code = b.code
GROUP BY localite, a.code) as x
JOIN
(SELECT localite, COUNT(*) as "number"
FROM client as a join commande as b on a.code = b.code
GROUP BY localite) as y
ON x.localite = y.localite
Les champions de SQL arriveront certainement à simplifier tout ça...
Partager