recherche

Maison  >  Questions et réponses  >  le corps du texte

Insérer des données dans une table en référençant les colonnes d'une autre table en SQL

<p>J'ai créé deux tables, l'une est animation_companies (société d'animation) et l'autre est cartoon_characters (personnages de dessins animés). Maintenant, je reçois un document qui dit "Simulation d'un superviseur demandant d'insérer des informations dans une base de données que j'ai créée". Les données ressembleront à ceci :<br /><br />La table animation_companies ne contiendra que les trois enregistrements suivants :</p><p><br /></p> <pre class="brush:php;toolbar:false;">Warner Bros. Disney Nickelodeon</pré> <p>La table cartoon_characters ne contiendra que quatorze (14) enregistrements, y compris le nom du personnage, l'année de sa création et la société propriétaire du personnage de dessin animé. <br /><br />Les sociétés "Warner Bros.", "Disney" et "Nickelodeon" sont uniquement à des fins d'affichage et doivent être référencées à partir de la table animation_companies.</p><p><br /></p> <pre class="brush:php;toolbar:false;">|Nom du dessin animé |Année de création |Entreprise | ------------- | ------------- |--------------- | |Porky Pig |1935 |Warner Bros.| |Daffy Duck |1937 |Warner Bros.| |Elmer Fudd |1937 |Warner Bros.| |Bugs Bunny |1940 |Warner Bros.| |Corne de brume Livourne|1946 |Warner Bros.| |Mickey Souris |1928 |Disney | |Dingo |1934 |Disney | |Donald Canard |1931 |Disney | |Elsa d'Arendelle|2013 |Disney | |Anne d'Arendelle|2013 |Disney | |Doug Funnie |1991 |Nickelodeon | |Arnold Shortman|1985 |Nickelodeon | |Tommy Pickles |1991 |Nickelodeon | |Aang |2005 |Nickelodeon |</pré> <p> <pre class="brush:php;toolbar:false;">CREATE TABLE Animation_Companies ( CompanyID INT CLÉ PRIMAIRE AUTO_INCREMENT, Nom de l'entreprise VARCHAR(100) NOT NULL ); La table cartoon_characters a été créée à l'aide de cette instruction : CREATE TABLE Personnages_de_dessins_animés ( cartoonID INT CLÉ PRIMAIRE AUTO_INCREMENT, cartoonName VARCHAR(100) NON NULL, annéeCréé INT, SociétéPropriétaire INT NON NULL, CompanyID INT NON NULL, CONTRAINTE Cartoon_Characters_fk_Animation_Companies CLÉ ÉTRANGÈRE (CompanyID) RÉFÉRENCES Animation_Companies (CompanyID) );</pré> <p> <pre class="brush:php;toolbar:false;">INSERT INTO animation_companies(CompanyName) VALEURS ("Warner Bros."), ("Disney"), ("Nickelodeon") ;</pre> <p>使用列列表,编写插入语句,插入卡通名称、创建年份和所属公司。<br /><br />Remarque : <br /><br />Placez la chaîne entre guillemets simples. Faites attention aux espaces. Utilisez DEFAULT pour incrémenter automatiquement la valeur. par l'ID entier." <br /><br />Voici l'instruction que j'ai essayée : </p><p><br /></p> <pre class="brush:php;toolbar:false;">INSÉRER DANS cartoon_characters VALEURS (PAR DÉFAUT, 'Porky Pig', 1935, 'Warner Bros.', 1), (DÉFAUT, 'Daffy Duck', 1937, 'Warner Bros.', 1), (DÉFAUT, 'Elmer Fudd', 1937, 'Warner Bros.', 1), (PAR DÉFAUT, 'Bugs Bunny', 1940, 'Warner Bros.', 1), (DÉFAUT, 'Foghorn Leghorn', 1946, 'Warner Bros.', 1), (PAR DÉFAUT, 'Mickey Mouse', 1928, 'Disney', 2), (DÉFAUT, 'Goofy', 1934, 'Disney', 2), (DÉFAUT, 'Donald Duck', 1931, 'Disney', 2), (DÉFAUT, 'Elsa d'Arendelle', 2013, 'Disney', 2), (DÉFAUT, 'Anna d'Arendelle', 2013, 'Disney', 2), (DÉFAUT, 'Doug Funnie', 1991, 'Nickelodeon', 3), (DÉFAUT, 'Arnold Shortman', 1985, 'Nickelodeon', 3), (DÉFAUT, 'Tommy Pickles', 1991, 'Nickelodeon', 3), (DÉFAUT, 'Aang' 2005, 'Nickelodeon', 3);</pre> <p><br /></p>
P粉342101652P粉342101652510 Il y a quelques jours561

répondre à tous(1)je répondrai

  • P粉738248522

    P粉7382485222023-08-03 14:38:57

    Une solution consiste à insérer d’abord les données dans une table temporaire.

    INSERT INTO #SomeTempTable
    VALUES ('Porky Pig', 1935, 'Warner Bros.', 'Warner Bros');

    Puis rejoignez-le (JOIN) avec la table Animation_Companies.

    INSERT INTO cartoon_characters(cartoonName, YearCreated, OwningCompany, CompanyId)
    SELECT t.cartoonName, t.YearCreated, t.OwningCompany, a.CompanyId
    FROM #SomeTempTable t
    JOIN Animation_Companies a ON a.CompanyName = t.CompanyName

    répondre
    0
  • Annulerrépondre