2017-09-25 211 views
-1

我有一個有兩列(名稱,電話)的表的數據庫,我想創建一對多的關係,以便同一個人可以有很多鏈接或電子郵件,我知道PDO和PHP SQL &。如何在兩個表之間創建一對多的關係?

例如有人叫約翰,他的電話號碼是78747384323,同一個人有很多鏈接,所以當我在數據庫中點擊他的名字時,我看到他的所有鏈接。

同一個人可以插入一個以上的時間與相同的名稱和數量,但不同的鏈接數據庫,

如何實現這一目標?因此,當我第一次插入姓名和電話以及一個鏈接時,姓名和電話號碼將被添加到第一張表格中,但是會鏈接到第二張表格,並且當同一個人再次以相同的姓名和電話號碼被插入時另一個鏈接,鏈接添加到他以前的鏈接。

+0

我不知道,如果你知道外鍵,但與啓動,如果你不知道。 – Loko

+0

https://stackoverflow.com/questions/12402422/how-to-store-a-one-to-many-relation-in-my-sql-database-mysql – bc2946088

+0

這實際上是兩個問題。一個是關於數據庫設計,另一個是關於添加記錄。一次做一件事。從設計開始。 –

回答

0

你應該有2個表格。第一個叫做users,第二個叫做user_details。在你的第一張表格中,你應該有一個獨特的字段。 mobile。 在插入namemobile之前,您應該檢查手機是否存在。如果移動存在,則將linkemail插入另一個表(user_details)。在user_details表中應該有一個列user_id這將標識用戶鏈接和電子郵件的關係。

0

正如Loko的上面的評論 - 你需要外鍵。基本上,你的「人」表應該有一個主鍵,如「PERSONID」:

CREATE TABLE person (
    personid int not null auto_increment, 
    name varchar(50), 
    phone varchar(20), 
    primary key (personid) 
) 

您的郵箱表將隨後引用這是一個外鍵 - 即

CREATE TABLE email (
    emailid int not null auto_increment, 
    emailaddress varchar(100), 
    personid int, 
    primary key (emailid), 
    foreign key (personid) 
    references person(personid) 

) 

(編輯添加主鍵到電子郵件表)

這會給你買一對多的關係 - 其中一個人可以有零到多個電子郵件地址(每個電子郵件地址都蓋上了他們的personid所有者)。

因此,在這個例子中,如果你想顯示屬於某個人的所有電子郵件地址,你知道他們的「PERSONID」你可以這樣做:

SELECT emailaddress FROM email WHERE personid = 1234 

如果你只知道他們的名字,你可以做一個加盟:

SELECT email.emailaddress 
FROM email 
INNER JOIN person ON person.personid = email.personid 
WHERE person.name = 'Jon Byjovi' 

(編輯以顯示查詢示例)

相關問題