表中的不同行但与MySQL和php具有相同的外键

时间:2015-06-29 10:31:27

标签: php mysql

如何在表中使用不同的行但使用相同的外键,使事件相同,但不再插入事件表?

Event_IDevent表和participant表中是一致的,但我需要它对participant表中的同一事件是相同的,而不是插入{同一事件的{1}}表

这是我的代码段:

event

2 个答案:

答案 0 :(得分:1)

你的问题似乎含糊不清,但我会尝试在上下文中回答......

所以你有def preferredLocation: Option[String] - (void)readJsonData { NSString *path = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"json"]; NSURL *url = [NSURL fileURLWithPath:path]; NSData *data = [NSData dataWithContentsOfURL:url]; NSError *error; NSDictionary *dict = [NSJSONSerialization JSONObjectWithData: data options: NSJSONReadingAllowFragments error: &error]; NSLog(@"Parsed json data- %@", dict); } ,你想知道哪些参与者会参加某个活动。

因此,您可能希望为注册事件的每个参与者创建第3个表,并将其EVENTS调用,将PARTICIPANTSATTENDEES插入event_id表。

因此,如果您想知道哪些参与者参与某个活动,您只需在participant_id表格中查找ATTENDEES所有与会者的所有与会者。

另请阅读many to many relations to get a better picture

答案 1 :(得分:0)

这似乎是一个非常好的问题。

以下是您正在做的事情:

  • 您将数据推送到event表。
  • 您从eventID表中选择event并使用它将其他数据推送到 participant表。

这是您想要做的事情:

  • 将数据推送到event表。
  • 从推送到participant表格中将数据推送到eventID表格event
  • 同一eventID的{​​{1}}和event表中的participant保持不变。

以下是如何操作的:

  • event表格中创建一个单独的字段以存储event。或者,您可以将当前eventID保留用于计数,或从其属性中删除eventID,以便您可以控制它。此步骤的目的是能够手动管理您的AUTOINCREMENT变量。
  • 使用相应的eventID声明[至少精神上] eventID个数字。这样,您就知道events代表什么eventID,反之亦然。这些信息将来会派上用场。
  • 使用event在参与者表格中创建[非AUTOINCREMENT]字段。这将是您的事件表中的外键。
  • 在每个eventID语句中,使用您在步骤2中进行的eventID< - >事件匹配,将INSERT INTO event手动推送到eventID表格,并附上您提供的数据。再推。这可以确保dance_event和run_event各自具有唯一的event值,而dance_event和run_event各自的行eventID均为{。}}。
  • 在每个eventID语句处,重复上面的步骤4并根据您在步骤2中进行的eventID< - >事件匹配提交INSERT INTO participant。这可确保您拥有相同的{{1}跨参与同一事件的参与者行。

由于eventID在两个表中是标准的,因此它可用于查询参与者所参加的事件以及参加特定事件的参与者。

<强> ---- ---- ORRRRRR

你可以通过@TheSammie方式创建第三个缓冲区&#39;表格可帮助解决问题。

工作原理:

  • 创建一个表格,例如evendID
  • 在每eventIDattendees之后,执行INSERT INTO event

那就是它!比顶部的鲸脂短,仍然可以完成工作!

PS:在我过去遇到过这个问题的时候,我已经使用了@TheSammie的解决方案,它就像一个魅力!