我有一个"人"桌子,我有一个"会议" table,其中有两个coloumns:Person1_ID和Person2_ID。
当我为person1_ID(该人是其中一人")与Person2_ID(也是" people"表中的另一个人)建立会议时,该条目为会议结束了。但是,这也意味着Person2_ID也与Person1_ID会面;换句话说,这是一种双面关系。
我如何查询"会议"每个人?在表单中,我想显示"会议" fpr每个人分开但是我不确定如何从我的会议中提取信息#34;表
答案 0 :(得分:2)
我认为您会发现您当前的设计可能不足以模拟现实生活中会议管理的要求。
最基本的:
根据这两个简单的要求,您可以看到,对于单个会议记录,您需要能够关联多个People
记录,而不仅仅是2个。
这可以这样建模:
Meetings table MeetingsPeople table
------------------------ -----------------------
ID (PK) AUTONUMBER -> MeetingID (FK) NUMBER
Description TEXT PersonID (FK) NUMBER
Location TEXT
DateTimeStart DATETIME
Duration NUMBER
MeetingsPeople
表非常简单:它用于将给定人员链接到给定会议
这将取消您的限制。现在,您可以拥有会议所需的人数,而不仅仅是2人。
如果您想记录发起会议的人或其他参与者确认他们的出席情况,您可以将其添加到MeetingsPeople
表:
MeetingsPeople table
-----------------------
MeetingID (FK) NUMBER
PersonID (FK) NUMBER
IsMeetingOwner YES/NO
IsConfirmed YES/NO
当您创建新的Meetings
记录时,您还需要在MeetingsPeople
中创建一个链接到会议所有者的新记录。
要查询给定人员正在参加的所有会议(例如,生成他们的日程安排),您只需要一个简单的查询。
假设 John Doe 在ID
表格中有123
People
,我们想知道他今天应该参加的所有会议:
SELECT Meetings.*
FROM Meetings
INNER JOIN MeetingsPeople
ON MeetingsPeople.MeetingID = Meetings.ID
WHERE MeetingsPeople.PersonID = 123
AND DateTimeStart >= Date()
ORDER BY DateTimeStart;