J'ai créé un projet d'application distante sur libpq pour PostrgreSQL . Il se comporte bien, mais j'ai dressé le profil du fonctionnement général de l'application. Pour chaque résultat commercial final que je produis, il arrive que j'appelle quelque chose comme 40 clause select (via tcpip).
J'ai des réminiscences de SQL-Server me rappelant de minimiser le nombre d'interactions entre mon application distante et la base de données. Après avoir analysé mes sélections, je pense que je pourrais réduire ce nombre à 3 SELECT
clauses, en utilisant des jointures. Mais je ne me souviens pas de la syntaxe pour utiliser le résultat d'un SELECT
dans un autre SELECT
.
Par exemple:
SELECT * FROM individual
INNER JOIN publisher
ON individual.individual_id = publisher.individual_id
WHERE individual.individual_id = 'here I would like to use the results of a another select'
Cet autre SELECT
serait simplement du genre:
SELECT identifier FROM another_table WHERE something='something'
Voici la disposition simplifiée des tableaux, déclinée plusieurs fois pour différents item_types ... (3 types totalement différents, d'où les 3 requêtes SQL si optimisées).
table passage
id_passage PK
business_field_passage bytea
table item
id_item PK
id_passage FK
business_field_item text
table item_detail
id_item_detail PK
id_item FK
business_field_item_detail text
image_content bytea
Il y en a plusieurs id_item
pour un id_passage
.
Il y en a plusieurs id_item_detail
pour un id_item
.
Comment écririez-vous cela?
Quel est le nom pour décrire l'action de rediriger une sélection vers une autre (le cas échéant)?
la source
Réponses:
C'est ce que vous visez? Assurez-vous que les champs qui sont comparés sont comparables (c'est-à-dire que les deux champs sont numériques, texte, booléen, etc.).
Si vous souhaitez sélectionner en fonction de plusieurs valeurs:
la source
SELECT someID FROM table WHERE blahblahblah
a plusieurs enregistrements? Je vais vérifier ça maintenant.WHERE Individual.IndividualId IN...
Cela semble bon.Vous pouvez simplement réécrire cela comme un autre
JOIN
. C'est normalement le plus simple et le plus rapide:J'ai également simplifié quelque peu et supprimé l'orthographe gratuite des identifiants CamelCase.
la source
join
au lieu d'unin ( select...)
Dans ce cas, je dois également attribuer la bonne réponse à Erwin.