2015-05-29 53 views
0

如何在兩列中插入相同的記錄但不同行而不復制同一行中的兩列?如何在一列中插入相同的記錄,但在mysql中的不同行?

我有兩個表

結構表REK

  • REK INT(主鍵)
  • 名VARCHAR(10)
  • 地址VARCHAR(15)

結構表CEK

  • CEK INT(主鍵)
  • REK INT(外鍵)
  • 日期日期

表REK

rek name address 
001 Jane Alaska 
002 Amel Washington 
003 John Virginia 

表CEK (我希望我的輸出看起來像下表。)

cek rek date 
01  002 12-05-2015 
01  003 12-05-2015 
02  002 13-05-2015 
03  001 12-05-2015 

如何我可以插入表cek如果我想輸出像表cek?當我試圖插入如上表所示的數據時,我不能。當我從cek中刪除主鍵時,數據被複制。

+1

顧名思義,'insert'創建一個NEW記錄。如果您想將數據「插入」兩個不同的記錄,則只有其中一個可能是新的。另一個必須是「更新」。 –

+0

所以,我不能得到像表cek的輸出? – Ritsu

+0

所以你想查看像cek或rek的輸出?你從REK表中取出rek並將它們與日期一起添加到CEK表中...... IS是否正確? –

回答

0

從你的第二個表cek從兩列中刪除主鍵和Fk。 並以這種方式在列(cek,rek)上創建複合主鍵您的話可以在兩列但不同的行中記錄,而不會在同一行中複製兩列...... 或者最好的辦法是在這兩列之間創建橋接表

+0

謝謝你,它的工作原理:)真的非常感謝您的回答:)它解決了我的問題 – Ritsu

+0

@Ritsu您更改的東西可能已經解決了您的問題,但您不必刪除FK來聲明組合PK。你應該保持那個FK。您的插入問題可能必須與FKs一起使用。但請編輯你的問題更清楚。 – philipxy

0

通過將列cek聲明爲主鍵,您說每個cek值在表中都是唯一的。但是從你想要的輸出來看,這不是你想要的。也許你想要的是(cek,rek)對或(cek,rek,date)三元組是唯一的。如果是這樣,請聲明這樣一個(複合)主鍵。但是你沒有告訴我們足夠的知道主鍵。

+0

謝謝~~你是正確的使用複合鍵,但我因爲外鍵被卡住了,但現在它解決了:)謝謝你幫助我 – Ritsu

+0

「因爲外鍵」是什麼意思? – philipxy

+0

起初,我在表cek(field rek)上使用外鍵,所以我不能使複合鍵,然後我刪除表cek上的外鍵,現在它的工作原理(對不好的解釋) – Ritsu

相關問題