Re: Truc bizarre dans where in

From: Marc Cousin <mcousin(at)sigma(dot)fr>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: Truc bizarre dans where in
Date: 2009-03-12 10:01:53
Message-ID: 200903121101.53961.mcousin@sigma.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Le Thursday 12 March 2009 10:19:29 c(dot)maumont(at)univitis(dot)fr, vous avez écrit :
> Bonjour,
>
> Je viens de tomber sur un truc qui m'interpelle :
>
> J'ai lancé une requête contenant une erreur :
>
> UPDATE formu SET soc = '2' WHERE n_formu in (SELECT n_formu FROM cp WHERE
> n_tcp = 11 OR n_tcp = 12);
>
> L'erreur c'est qu'il n'y a pas de colonne n_formu dans la table cp.
> J'aurais du AMHA avoir une sortie en erreur alors que l'update a été
> effectué sur toutes les lignes de la table (sur une base de test OUF !).
>
> C'est d'autant plus drôle que si je lance :
>
> UPDATE formu SET soc = '2' WHERE n_formu in (SELECT toto FROM cp WHERE
> n_tcp = 11 OR n_tcp = 12);
>
> J'ai bien une erreur : ERREUR: la colonne « toto » n'existe pas
>
> Y-a-il une subtilité SQL qui m'échappe ?
>
> DEBIAN/ETCH
> psql -V
> psql (PostgreSQL) 8.1.11
>
> Cordialement.
>
> Christophe Maumont

le n_formu retenu par la requete, c'est celui de la table principale dans ce
cas la. Donc la sous requete te retourne la valeur de n_formu à chaque fois, à
partir du moment ou au moins un enregistrement vérifie la condition sur
n_tcp...

In response to

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Guillaume Lelarge 2009-03-12 10:03:44 Re: Truc bizarre dans where in
Previous Message Ludovic Levesque 2009-03-12 09:58:12 Re: Truc bizarre dans where in