2010-04-07 3 views
0

Может кто-нибудь объяснить приведенное ниже заявление с помощью рабочего примера/примера. заранее спасибо.Пример/пример, необходимый для настройки таблицы/поля

Вы не можете создавать повторяющиеся поля, но просто добавьте одно дополнительное поле «coupleId», которое будет иметь уникальный идентификатор для каждой пары; и две строки (по одному для каждого человека) на пару; затем присоедините таблицу к себе с помощью ограничения типа a.coupleId = b.coupleId AND a.id <> b.id, чтобы вы могли сконденсировать данные в одну строку результата для данной пары.

+3

Для таких же смутных, как я, это был ответ на его предыдущий вопрос: http://stackoverflow.com/questions/2591218/best-mysql-field-setup-to-have-a-couples-member -profile-data-saving –

ответ

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 и т. Д. ...? Если я должен это сделать, это сделало бы еще больше, чтобы создать паруTbl и поставить главного (первого) человека в таблице MainMember и второго человека в SteamTbl и использовать PersonID и SteamID ... и просто попросите его проверить, чтобы увидеть если SteamID является нулевым, и если не пойти в SteamTBL и сопоставить PersonID и взять данные второго лица? – acctman

+0

@acctaman, что лучше для вас, зависит от использования и значения ваших данных. прочитайте о нормализации, если сможете. подумайте о сообщениях. итерацию. – Unreason

Смежные вопросы