Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Update avec requête imbriquée

3 réponses
Avatar
G. L
Bonjour,

J'ai cette requête qui fonctionne correctement :

SELECT no_art, COUNT(no_oper) as OP
FROM bas_gamop
WHERE no_art between "4000660" and "4000720"
AND no_oper in (1,4,7,9,14,16,22)
AND no_gam = 1
GROUP BY 1
HAVING COUNT (no_oper) = 1

Je veux mettre le résultat de ma requête ci-dessus dans un champ d'une autre
table, je pensais faire comme ceci :

UPDATE bas_art
SET nb_op [1,1] = "1"
WHERE bas_art.no_art in (SELECT bas_gamop.no_art, COUNT(no_oper) as OP FROM
bas_gamop WHERE no_gam =1 AND no_oper IN (1,4,7,9,14,16,22) GROUP BY 1
HAVING COUNT (no_oper) = 1)
AND bas_art.no_art BETWEEN "4000660" AND "4000720"

Mais ce n'est pas bon, j'ai le message : -201 A syntax error has occurred.
(0,0,235275)[RDBMS]

BD informix

Merci d'avance pour vos conseils
Gérard

3 réponses

Avatar
Patrice
Le IN ne doit porter que sur un champ, là tu as deux champs (donc SELECT
bas_gamop.no_art FROM sans le COUNT(no_oper) qui ne sert que dans le HAVING.

Après essaie peut-être un groupe Informix...

Patrice

--

"G. " <sugere~KillPub~@online.fr> a écrit dans le message de
news:
Bonjour,

J'ai cette requête qui fonctionne correctement :

SELECT no_art, COUNT(no_oper) as OP
FROM bas_gamop
WHERE no_art between "4000660" and "4000720"
AND no_oper in (1,4,7,9,14,16,22)
AND no_gam = 1
GROUP BY 1
HAVING COUNT (no_oper) = 1

Je veux mettre le résultat de ma requête ci-dessus dans un champ d'une


autre
table, je pensais faire comme ceci :

UPDATE bas_art
SET nb_op [1,1] = "1"
WHERE bas_art.no_art in (SELECT bas_gamop.no_art, COUNT(no_oper) as OP


FROM
bas_gamop WHERE no_gam =1 AND no_oper IN (1,4,7,9,14,16,22) GROUP BY 1
HAVING COUNT (no_oper) = 1)
AND bas_art.no_art BETWEEN "4000660" AND "4000720"

Mais ce n'est pas bon, j'ai le message : -201 A syntax error has occurred.
(0,0,235275)[RDBMS]

BD informix

Merci d'avance pour vos conseils
Gérard




Avatar
G. L
Merci pour cette piste
Gérard




"Patrice" a écrit dans le message de
news:
Le IN ne doit porter que sur un champ, là tu as deux champs (donc SELECT
bas_gamop.no_art FROM sans le COUNT(no_oper) qui ne sert que dans le


HAVING.

Après essaie peut-être un groupe Informix...

Patrice

--

"G. " <sugere~KillPub~@online.fr> a écrit dans le message de
news:
> Bonjour,
>
> J'ai cette requête qui fonctionne correctement :
>
> SELECT no_art, COUNT(no_oper) as OP
> FROM bas_gamop
> WHERE no_art between "4000660" and "4000720"
> AND no_oper in (1,4,7,9,14,16,22)
> AND no_gam = 1
> GROUP BY 1
> HAVING COUNT (no_oper) = 1
>
> Je veux mettre le résultat de ma requête ci-dessus dans un champ d'une
autre
> table, je pensais faire comme ceci :
>
> UPDATE bas_art
> SET nb_op [1,1] = "1"
> WHERE bas_art.no_art in (SELECT bas_gamop.no_art, COUNT(no_oper) as OP
FROM
> bas_gamop WHERE no_gam =1 AND no_oper IN (1,4,7,9,14,16,22) GROUP BY 1
> HAVING COUNT (no_oper) = 1)
> AND bas_art.no_art BETWEEN "4000660" AND "4000720"
>
> Mais ce n'est pas bon, j'ai le message : -201 A syntax error has


occurred.
> (0,0,235275)[RDBMS]
>
> BD informix
>
> Merci d'avance pour vos conseils
> Gérard
>
>




Avatar
G. L
Bonsoir,
J'ai contourné le problème en créant une table temporaire
Merci encore pour la réponse
Gérard




"Patrice" a écrit dans le message de
news:
Le IN ne doit porter que sur un champ, là tu as deux champs (donc SELECT
bas_gamop.no_art FROM sans le COUNT(no_oper) qui ne sert que dans le


HAVING.

Après essaie peut-être un groupe Informix...

Patrice

--

"G. " <sugere~KillPub~@online.fr> a écrit dans le message de
news:
> Bonjour,
>
> J'ai cette requête qui fonctionne correctement :
>
> SELECT no_art, COUNT(no_oper) as OP
> FROM bas_gamop
> WHERE no_art between "4000660" and "4000720"
> AND no_oper in (1,4,7,9,14,16,22)
> AND no_gam = 1
> GROUP BY 1
> HAVING COUNT (no_oper) = 1
>
> Je veux mettre le résultat de ma requête ci-dessus dans un champ d'une
autre
> table, je pensais faire comme ceci :
>
> UPDATE bas_art
> SET nb_op [1,1] = "1"
> WHERE bas_art.no_art in (SELECT bas_gamop.no_art, COUNT(no_oper) as OP
FROM
> bas_gamop WHERE no_gam =1 AND no_oper IN (1,4,7,9,14,16,22) GROUP BY 1
> HAVING COUNT (no_oper) = 1)
> AND bas_art.no_art BETWEEN "4000660" AND "4000720"
>
> Mais ce n'est pas bon, j'ai le message : -201 A syntax error has


occurred.
> (0,0,235275)[RDBMS]
>
> BD informix
>
> Merci d'avance pour vos conseils
> Gérard
>
>