2010-04-07 87 views
0

有人可以使用工作示例/示例向我解釋下面的語句。提前致謝。表格/字段設置所需的示例/示例

您不能創建重複字段,只需添加一個額外字段「coupleId」,該字段對每個對都有一個唯一的ID;和兩排(每人一個);然後使用a.coupleId = b.coupleId和a.id這樣的約束將表與自己聯繫起來,以便您可以將數據壓縮到給定對的單個結果行中。

+3

對於那些和我一樣困惑的人來說,這是他以前的問題的答案:http://stackoverflow.com/questions/2591218/best-mysql-field-setup-to-have-a-couplesmember -profile-data-saving – 2010-04-07 19:14:46

回答

1

鑑於表Person,如下所示:

Person 
========== 
PersonID (int, autoincrement) 
CoupleID (nullable int) 
Name (nullable varchar(50)) 

插入一些行:

insert into Person (CoupleID, Name) values (1, 'John') 
insert into Person (CoupleID, Name) values (1, 'Mary') 
insert into Person (CoupleID, Name) values (null, 'Sue') 

現在,你可以找到人組成一對夫婦用下面的查詢:

select p1.CoupleID, p1.PersonID as Person1ID, p1.Name as Person1Name, p2.PersonID as Person2ID, p2.Name as Person2Name 
from Person p1 
inner join Person p2 on p1.CoupleID = p2.CoupleID 
where p1.PersonID <> p2.PersonID 
order by p1.PersonID 

輸出:

PersonID CoupleID Name            PersonID CoupleID Name 
----------- ----------- -------------------------------------------------- ----------- ----------- -------------------------------------------------- 
2   1   Mary            1   1   John 
1   1   John            2   1   Mary 

(2 row(s) affected) 
+0

感謝您的幫助。我會有9個其他領域,如年齡,身高,體重等......對於每對夫婦都必須是特定的,所以我必須添加Age1,Age2,Height1,Height2等...?如果我必須這樣做,那麼創建CoupleTbl並將主要(第一個)人員放在MainMember表中並將第二個人放在CoupleTbl中,並使用PersonID和CoupleID ...並僅檢查它就可以瞭如果CoupleID爲空,並且如果不去CoupleTBL並匹配PersonID並獲取第二人數據? – acctman 2010-04-07 20:27:21

+0

@acctaman,最適合你的取決於你的數據的用法和意義。如果可以的話,請閱讀正常化。考慮報告。迭代。 – Unreason 2010-04-07 21:16:00