it-swarm-fr.com

Query PostgreSQL 9.0 Tableau sur la valeur de la clé étrangère?

Question de type noob:

Dis que j'ai deux tables, bonbons et couleurs. La table de couleurs contient juste des paires de code/de valeur telles que 01 jaune, 02 bleu, 03 vert, etc. et est référencé dans la table de bonbons par code.

Comment interroger la table de bonbons pour tous les bonbons bleus sans une jointure explicite? Pendant deux ans maintenant, j'ai écrit ces requêtes avec des jointures, comme:

Sélectionnez * à partir de bonbons une jointure Couleurs O ON (A.Color_Code = O.Color_Code)
Où o.color_value = "bleu";

Je suis certain à chaque fois que j'apporte une arme à feu au combat, mais mon googling a été infructué.

Merci.

3
rec.thegeom

Vous pouvez l'écrire comme:

select
  ca.*
from
  candies ca
where
  ca.color_code = (
    select co.color_code
    from colors co
    where co.color_value = 'blue'
  )

mais il ne devrait y avoir aucune différence. En fait, l'approche de jointure est un peu plus robuste.

De plus, envisagez de vous débarrasser de la table des couleurs du tout et d'utiliser juste color_values ​​au lieu de codes. C'est en fait plus efficace.

0
user1593