0

MySqlにストアドプロシージャがあり、Person_Tableに値を挿入しようとしています。Person_Tableの列の1つはCompanyIDです。

しかし、CompanyIDを取得する必要がありCompany_Table.CompanyIDます。これは自動インクリメントされた主キーです。両方のテーブルにも列がありますCompanyName。同じ手順で列に挿入Company+Table.CompanyIDしたい。Person_Table.CompanyID

2つのテーブルの内部結合に問題があります。挿入ステートメントでテーブルを内部結合できますか?

これは私がこれまでに持っているものですが、内部結合が好きではありません:

        insert into person p
    (FarmName, FirstName, MiddleName, LastName, Phone, CompanyID)
    values
   ( oFarmName, oFirstName, oMiddleName, oLastName, oPhone, oCompanyID)   

    inner join company c on p.FarmNamne =  c.CompanyName
    where p.FarmName = c.CompanyID;
4

2 に答える 2

0

あなたの質問を正しく理解していれば、情報に合わせてテーブルと列の名前を変更した後、これが機能するはずです。

INSERT INTO Person_Table
(FarmName, FirstName, MiddleName, LastName, Phone, CompanyID)
VALUES
( oFarmName, oFirstName, oMiddleName, oLastName, oPhone, (
    SELECT c.CompanyId FROM Person_Table p 
    INNER JOIN Company_Table c ON c.CompanyName = p.CompanyName)
)

これは、重複する会社名がない場合にのみ機能しますが、試してみてください.

于 2012-07-17T21:09:05.223 に答える
0

内部結合に挿入できるかどうかはお答えできませんが、私の感覚では不可能です。

とにかく、少し助けを提供するために、この問題を別の方法で解決することをお勧めします。

最初のテーブルにトリガーを置いてみませんかAFTER INSERT。この時点で、自動インクリメント ID は既知であり、トリガーを使用して表 2 に簡単に挿入できます。

http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html

于 2012-07-17T20:24:06.950 に答える