2017-04-03 38 views
-1

我有兩個表Patient和Details。患者與具有外鍵的詳細信息相關。在患者中,一個用戶可以具有多個Details值。mysql如何在單列中插入多個值

我想:

INSERT INTO `Patients` 
     (`patientId`, `name`, `address`, `etage`, 
     `Door`, `Elevator`, `key_number`, `medicineId`, `lid`, 
     `doctorId`) 
VALUES (109, 'Muller', 'bla bla bla ', 3, 
      'links' , 1 , 'S12' ,'m9' , '{02.0 , 2.10 ,2.30}' , 
      'D11'); 

當我嘗試插入,我得到以下錯誤:

Cannot add or update a child row: a foreign key constraint fails (Sanitas . Patients , CONSTRAINT Patients_ibfk_2 FOREIGN KEY (lid) REFERENCES Details (lid))

+0

我看你最好向我們展示了這兩個表 – RiggsFolly

+1

價值'的模式「{02.0,2.10,2.30}」'不喜歡看值將被放置在一個名爲'lid'的列中 – RiggsFolly

+0

就像@RiggsFolly所說的那樣,值'{02.0,2.10,2.30}'顯然不存在於你的'Details'表中。 – winter

回答

0

外鍵意味着Patiens每一行應該在其列lid的值匹配列Details中可用的值;最有可能的是,Details中沒有行lid的值爲{02.0 , 2.10 ,2.30}

使用該結構,您應該爲每個lid值插入一行,但這會導致其他問題(可能重複patientId鍵)。

這會在您的表格設計中顯示一些問題:您所描述的內容看起來像many-to-many關係,這需要對三個表格進行建模。

結構你需要的是

​​

這樣你可以有一個單列爲每一個病人,一個單獨的行,每一個細節,並通過結合病人和細節的所有組合的表關聯這兩個實體的ID。

你寫的查詢將被分成

INSERT INTO `Patients` 
    (`patientId`, `name`, `address`, `etage`, `Door`, `Elevator`, `key_number`, 
    `medicineId`, `doctorId`) 
VALUES (109, 'Muller', 'bla bla bla ', 3, 'links', 1 , 'S12' ,'m9' , 'D11'); 

INSERT INTO `PatientsDetail` (`patientId`, `lid`) 
VALUES 
    (109, 02.0), 
    (109, 2.10), 
    (109, 2.30); 
+0

我認爲這是最好的解決方案,我會嘗試這個。 – SwiftUser