Postgres tableau de recherche dans la clause where

J'ai une requête:

SELECT bar, (SELECT name FROM names WHERE value = bar) as name
FROM foobar WHERE foo = 1 and bar = ANY (1,2,3)

Mon problème c'est que quand il n'y a pas de ligne contenant bar = 3 (ou toute autre valeur est demandé) dans le tableau foobar, aucune ligne n'est retournée pour que la valeur de la barre.

J'aimerais que ma requête pour renvoyer une ligne de [bar, NULL] à la place, mais ne peux pas penser à une façon d'aborder cette.

Est-ce même possible?

Deux choses devraient se préciser votre requête: left outer join permettra de joindre à votre demande. Deuxièmement, les tableaux ne sont pas vraiment faites pour être fouillé comme les mini-tables. Si vous ne connaissez pas l'index du tableau il y a une bonne chance que vous êtes en abuser.
Je pense que le tableau est un hareng rouge ici. Je crois qu'il veut une ligne de (bar, NULL) retourné, ce qui fait sens dans son contexte.
Peter, le tableau est tout simplement une façon de s'adapter à plusieurs valeurs de la barre sans avoir à générer beaucoup de "bar = x ou bar = y ou..." clauses. Je n'ai aucun contrôle dessus de la barre des valeurs, c'est mon entrée et il peut contenir une ou plusieurs valeurs que j'ai à interroger. D'où le tableau. Si il n'y a plus épurée de manière à ce faire avec SQL, j'aimerais vous entendre à ce sujet.
Je pense que votre question et ma réponse serait un meilleur ajustement sur dba.se - si vous l'acceptez, êtes-vous prêt à envisager d'auto-repérage de la migration?

OriginalL'auteur Alex Tokarev | 2011-03-30