有人可以使用工作示例/示例向我解釋下面的語句。提前致謝。表格/字段設置所需的示例/示例
您不能創建重複字段,只需添加一個額外字段「coupleId」,該字段對每個對都有一個唯一的ID;和兩排(每人一個);然後使用a.coupleId = b.coupleId和a.id這樣的約束將表與自己聯繫起來,以便您可以將數據壓縮到給定對的單個結果行中。
有人可以使用工作示例/示例向我解釋下面的語句。提前致謝。表格/字段設置所需的示例/示例
您不能創建重複字段,只需添加一個額外字段「coupleId」,該字段對每個對都有一個唯一的ID;和兩排(每人一個);然後使用a.coupleId = b.coupleId和a.id這樣的約束將表與自己聯繫起來,以便您可以將數據壓縮到給定對的單個結果行中。
鑑於表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)
感謝您的幫助。我會有9個其他領域,如年齡,身高,體重等......對於每對夫婦都必須是特定的,所以我必須添加Age1,Age2,Height1,Height2等...?如果我必須這樣做,那麼創建CoupleTbl並將主要(第一個)人員放在MainMember表中並將第二個人放在CoupleTbl中,並使用PersonID和CoupleID ...並僅檢查它就可以瞭如果CoupleID爲空,並且如果不去CoupleTBL並匹配PersonID並獲取第二人數據? – acctman 2010-04-07 20:27:21
@acctaman,最適合你的取決於你的數據的用法和意義。如果可以的話,請閱讀正常化。考慮報告。迭代。 – Unreason 2010-04-07 21:16:00
對於那些和我一樣困惑的人來說,這是他以前的問題的答案:http://stackoverflow.com/questions/2591218/best-mysql-field-setup-to-have-a-couplesmember -profile-data-saving – 2010-04-07 19:14:46