2008-11-11 9 views
1

Je voudrais savoir s'il est possible de sélectionner certaines colonnes d'une table et une autre colonne d'une seconde table, qui concernerait une colonne non importée dans la première table. Je dois obtenir ces données d'accès, et je ne sais pas si cela est possible avec Access, ou SQL en général.Instruction SQL à partir de deux tables

Répondre

6

En supposant que la structure de la table suivante:

CREATE TABLE tbl_1 (
    pk_1 int, 
    field_1 varchar(25), 
    field_2 varchar(25) 
); 

CREATE TABLE tbl_2 (
    pk_2 int, 
    fk_1 int, 
    field_3 varchar(25), 
    field_4 varchar(25) 
); 

Vous pouvez utiliser les éléments suivants:

SELECT t1.field_1, t2.field_3 
FROM tbl_1 t1 
INNER JOIN tbl_2 t2 ON t1.pk_1 = t2.fk_1 
WHERE t2.field_3 = "Some String" 

En ce qui concerne le poste de Bill, il y a deux façons de créer REJOIGNEZ est dans des requêtes SQL:

  • Implicite - La jointure est créée en utilisant la clause WHERE du rès avec plusieurs tables étant précisé dans la clause FROM

  • explicite - La jointure est créée à l'aide le type approprié de clause JOIN (INNER, GAUCHE, DROITE, COMPLET)

Il est toujours recommandé que vous utilisez la syntaxe JOIN explicite en tant que jointures implicites peut présenter des problèmes une fois que la requête devient plus complexe. Par exemple, si vous ajoutez plus tard une jointure explicite à une requête qui utilise déjà une jointure implicite avec plusieurs tables référencées dans la clause FROM, la première table référencée dans la clause FROM ne sera pas visible pour la table jointe explicitement.

+1

Inner Join sélectionne uniquement les enregistrements qui ont une correspondance dans les deux tables. Dans certains cas, Left Join pourrait être mieux (http://www.devshed.com/c/a/MySQL/Understanding-SQL-Joins/) – Fionnuala

+0

Remou: excellente tautologie. – Dave

+1

@Dave logique ou rhétorique? – Fionnuala

2

Ce que vous recherchez sont-JOIN:

http://en.wikipedia.org/wiki/Join_(SQL)

Vous avez besoin des clés primaires pour les ensembles de données référencées et les clés étrangères dans la première table.

+0

Les clés primaires et étrangères ne sont pas strictement nécessaires. –

+0

Mais recommandé (au moins si vous me demandez ;-) – okoman

+0

Bien sûr, je peux être d'accord avec cela. Mais vous avez dit "besoin" dans votre réponse. –

0

Je ne suis pas sûr à 100% que je comprends votre question.

est le suivant vrai:

Votre première table est importée d'ailleurs. Vous importez uniquement certaines colonnes. Vous souhaitez créer une requête qui référence une colonne que vous n'avez pas importée.

Si cela est vrai, ce n'est tout simplement pas possible. En ce qui concerne le moteur de requête Access concerné, les colonnes non importées n'existent pas.

Pourquoi ne pas simplement les importer?

+1

Je pense que vous avez peut-être mal interprété la question parce que le mot «importé» a été utilisé d'une manière un peu étrange. – Fionnuala

0

Mais les clés primaires rendent la requête plus efficace

+1

Si vous n'avez pas de clés primaires, vous n'avez vraiment pas de base de données relationnelle, et SQL ne fonctionnera donc pas très bien. –

Questions connexes