MySQL - Comment créer une nouvelle table qui est une jointure sur clé primaire de deux tables existantes

StackOverflow https://stackoverflow.com/questions/2112043

Question

J'ai deux tables existantes, avec différents domaines, à l'exception de l'ID primaire (varchar, pas un int). Je veux créer une troisième table qui est essentiellement une fusion de ces deux, de sorte que pour une clé primaire donné que j'ai tous les champs dans une table.

Quelle est la façon bext de le faire?

Merci

Était-ce utile?

La solution

Si vous êtes sûr que vous en avez un et exactement une ligne dans les deux tables pour une identification primaire donné, cela devrait fonctionner:

SELECT
    tablea.field1, tablea.field2, tablea.field3, ... tablea.fieldn, <---- field list
    tableb.field1, tableb.field2, tableb.field3, ... tableb.fieldm  <---- field list
FROM
    tablea, tableb
WHERE
    tablea.primaryID = tableb.primaryID

Vous pouvez omettre champ ID principal de TableA et tableb de la liste des champs si vous (les deux contiendra dans cette requête la même valeur en raison de la condition de tablea.primaryID = tableb.primaryID) n'a pas besoin réellement eux.

La syntaxe est relativement similaire pour un VIEW aussi bien.

Autres conseils

CREATE TABLE result AS 
  (SELECT first.*, 
          second.f1, 
          second.f2, 
          second.f3 
   FROM   first 
          INNER JOIN second 
                  ON first.id = second.id);

Pour obtenir une vue, faire la même chose, sauf remplacer « TABLE » par « VIEW ». Si vous allez à la table plutôt que la vue, assurez-vous d'ajouter une clé primaire qui ne seront pas ajoutés par défaut.

Pour utiliser MS SQL cette

SELECT * INTO result 
FROM  table1
INNER JOIN table2
ON table1.id = table2.id

Pourquoi vous créez une nouvelle table? Pourquoi ne pas exécuter simplement une requête à chaque fois que vous avez besoin des données? Si vous êtes juste de joindre deux tables sur leur clé primaire, la majorité de votre temps d'accès aux données va être dépensé marshalling les données à votre application. Tu ne vas pas être économiser beaucoup de temps pré-assemblage des tables, et vous allez manger beaucoup d'espace. De plus, vous prenez à votre objectif gros orteil, attendant juste pour la première fois que vous mettez à jour vos tables source et oubliez de lancer votre script de mise à jour pour copier les modifications apportées à votre table jointe. données en double est mal , mais il est parfois nécessaire. Cela ne ressemble pas à un de ces moments.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top