Précédent   Forum des professionnels en informatique > Bases de données > Décisions SGBD
Décisions SGBD Forum de décisions sur le choix en bases de données. Le Comparatif
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/08/2006, 09h35   #1
Membre régulier
 
Inscription : avril 2004
Messages : 573
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : avril 2004
Messages : 573
Points : 74
Points : 74
Par défaut HAVING interdit dans cette requete?

Est ce que quelqu'un a une idée de la raison pour laquelle je ne pourrais pas mettre un HAVING dans la requete suivante?

UPDATE TableT SET
field1=0
WHERE field2=val2
AND field3=val2
HAVING COUNT (field2||field3)= 6;

Le COUNT est fait avant la mise à jour pourtant?

C'est au niveau du HAVING que ma requete bloque...
zuzuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2006, 11h42   #2
Membre habitué
 
Inscription : février 2006
Messages : 118
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 118
Points : 116
Points : 116
Tu devrais préciser quel SGBD tu utilises ou plus simplement poser ta question sur le forum destiné à ton SGBD.

As-tu essayé de simplifier ta requête pour voir à quel niveau ça bloque ? Par exemple sans utiliser ton || qui est peut-être une source de problème:

UPDATE TableT SET
field1=0
WHERE field2=val2
AND field3=val2
HAVING COUNT (field2)= 6;

Cela dit, HAVING s'utilise à la suite de la clause GROUP BY normalement et je n'en vois pas dans ta requête. Essaie quelque chose comme ça:

UPDATE TableT SET
field1=0
WHERE field2=val2
AND field3=val2
GROUP BY field1, field2, field3
HAVING COUNT (field2||field3)= 6;

Bonne chance!
yizashi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2006, 14h41   #3
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 446
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 446
Points : 7 546
Points : 7 546
Tu peux faire comme ça :
Code :
1
2
3
4
5
6
7
8
9
10
UPDATE  TableT 
SET     field1 = 0
WHERE   field2 = val2
    AND field3 = val3
    AND (   SELECT  COUNT(*)
            FROM    TableT  AS  cnt
            WHERE   cnt.field2 = val2
                AND cnt.field3 = val3
        )   = 6
;
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h28.


 
 
 
 
Partenaires

Hébergement Web