Besoin d'aide sur une requête probablement simple...
4 réponses
llopht
Salut à tous,
J'ai une base avec deux tables du genre (c'est un exemple) :
tblVilles (IdVille , strNom, bitGrandeVille, ...)
tblHabitants (IdHabitant, IdVille, strNom, ...)
Je veux le nombre d'habitants par ville. Je fais donc :
SELECT
count(tblHabitants.IdHabitant),
tblVilles.IdVille
FROM
tblHabitants
INNER JOIN tblVilles ON tblHabitants.IdVille = tblVilles.IdVille
GROUP BY
tblVilles.IdVille
Maintenant comment faire ma requête pour renseigner automatiquement le
champs bitGrandeVille si le nombre d'habitant dépasse 10000 personnes ???
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred BROUARD
Bonjour,
UPDATE tblVilles SET bitGrandeVille = 1 FROM tblVilles V INNER JOIN tblHabitants H ON V.IdVille = H.IdVille GROUP BY V.IdVille HAVING COUNT(H.IdHabitant) >= 10000
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
llopht a écrit :
Salut à tous,
J'ai une base avec deux tables du genre (c'est un exemple) :
tblVilles (IdVille , strNom, bitGrandeVille, ...)
tblHabitants (IdHabitant, IdVille, strNom, ...)
Je veux le nombre d'habitants par ville. Je fais donc :
SELECT count(tblHabitants.IdHabitant), tblVilles.IdVille FROM tblHabitants INNER JOIN tblVilles ON tblHabitants.IdVille = tblVilles.IdVille GROUP BY tblVilles.IdVille
Maintenant comment faire ma requête pour renseigner automatiquement le champs bitGrandeVille si le nombre d'habitant dépasse 10000 personnes ???
Merci pour l'aide !
llopht.
Bonjour,
UPDATE tblVilles
SET bitGrandeVille = 1
FROM tblVilles V
INNER JOIN tblHabitants H
ON V.IdVille = H.IdVille
GROUP BY V.IdVille
HAVING COUNT(H.IdHabitant) >= 10000
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
llopht a écrit :
Salut à tous,
J'ai une base avec deux tables du genre (c'est un exemple) :
tblVilles (IdVille , strNom, bitGrandeVille, ...)
tblHabitants (IdHabitant, IdVille, strNom, ...)
Je veux le nombre d'habitants par ville. Je fais donc :
SELECT
count(tblHabitants.IdHabitant),
tblVilles.IdVille
FROM
tblHabitants
INNER JOIN tblVilles ON tblHabitants.IdVille = tblVilles.IdVille
GROUP BY
tblVilles.IdVille
Maintenant comment faire ma requête pour renseigner automatiquement le
champs bitGrandeVille si le nombre d'habitant dépasse 10000 personnes ???
UPDATE tblVilles SET bitGrandeVille = 1 FROM tblVilles V INNER JOIN tblHabitants H ON V.IdVille = H.IdVille GROUP BY V.IdVille HAVING COUNT(H.IdHabitant) >= 10000
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
llopht a écrit :
Salut à tous,
J'ai une base avec deux tables du genre (c'est un exemple) :
tblVilles (IdVille , strNom, bitGrandeVille, ...)
tblHabitants (IdHabitant, IdVille, strNom, ...)
Je veux le nombre d'habitants par ville. Je fais donc :
SELECT count(tblHabitants.IdHabitant), tblVilles.IdVille FROM tblHabitants INNER JOIN tblVilles ON tblHabitants.IdVille = tblVilles.IdVille GROUP BY tblVilles.IdVille
Maintenant comment faire ma requête pour renseigner automatiquement le champs bitGrandeVille si le nombre d'habitant dépasse 10000 personnes ???
Merci pour l'aide !
llopht.
llopht
Parfait sauf qu'il me dit :
Syntaxe incorrecte vers le mot clé 'GROUP'.
Il y a moyen de remettre en même temps les autres à 0 si count(IdHabitatnt) < 10000 ? Ou faut il faire deux requetes ?
Fred BROUARD a écrit :
Bonjour,
UPDATE tblVilles SET bitGrandeVille = 1 FROM tblVilles V INNER JOIN tblHabitants H ON V.IdVille = H.IdVille GROUP BY V.IdVille HAVING COUNT(H.IdHabitant) >= 10000
A +
Parfait sauf qu'il me dit :
Syntaxe incorrecte vers le mot clé 'GROUP'.
Il y a moyen de remettre en même temps les autres à 0 si
count(IdHabitatnt) < 10000 ? Ou faut il faire deux requetes ?
Fred BROUARD a écrit :
Bonjour,
UPDATE tblVilles
SET bitGrandeVille = 1
FROM tblVilles V
INNER JOIN tblHabitants H
ON V.IdVille = H.IdVille
GROUP BY V.IdVille
HAVING COUNT(H.IdHabitant) >= 10000
Il y a moyen de remettre en même temps les autres à 0 si count(IdHabitatnt) < 10000 ? Ou faut il faire deux requetes ?
Fred BROUARD a écrit :
Bonjour,
UPDATE tblVilles SET bitGrandeVille = 1 FROM tblVilles V INNER JOIN tblHabitants H ON V.IdVille = H.IdVille GROUP BY V.IdVille HAVING COUNT(H.IdHabitant) >= 10000
A +
Gilles LE BARBIER
UPDATE tblVilles SET bitGrandeVille = CASE WHEN (select COUNT(H.IdHabitant) FROM tblHabitants H where H.idville = tblVilles.idville) >= 10000 THEN 1 ELSE 0 END
Gilles
UPDATE tblVilles
SET bitGrandeVille = CASE WHEN (select COUNT(H.IdHabitant) FROM
tblHabitants H where H.idville = tblVilles.idville) >= 10000 THEN 1 ELSE 0
END
UPDATE tblVilles SET bitGrandeVille = CASE WHEN (select COUNT(H.IdHabitant) FROM tblHabitants H where H.idville = tblVilles.idville) >= 10000 THEN 1 ELSE 0 END
Gilles
Gilles LE BARBIER
Ou encore :-)
UPDATE tblVilles SET bitGrandeVille = (select CASE WHEN COUNT(H.IdHabitant) >= 10000 THEN 1 ELSE 0 END FROM tblHabitants H where H.idville = tblVilles.idville)
Gilles
Ou encore :-)
UPDATE tblVilles SET bitGrandeVille = (select
CASE WHEN COUNT(H.IdHabitant) >= 10000
THEN 1
ELSE 0
END
FROM tblHabitants H where H.idville = tblVilles.idville)
UPDATE tblVilles SET bitGrandeVille = (select CASE WHEN COUNT(H.IdHabitant) >= 10000 THEN 1 ELSE 0 END FROM tblHabitants H where H.idville = tblVilles.idville)