MySQL - Comment créer une nouvelle table qui est une jointure sur clé primaire de deux tables existantes
-
22-09-2019 - |
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
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.