用2个表加入查询问题

时间:2015-04-30 21:38:34

标签: php mysql

首先,我甚至不知道如何调用该查询,但我敢打赌它存在。

我得到了一个包含事件的表格,以及代表(修复)人员的数字,他们将参加该事件。好的,然后我得到了一个用户表,其中这些人都是来自事件的id-s。事件单元看起来像" 1,5,22,47",人id-s。

问题是,我怎么能以每个人的名字来回应这个事件? :O有些人喜欢这样:

  

"活动:班级旅行:爱德华,西蒙斯博士,沃克夫人"

没有315345345查询......

表格示例:

  

活动:

     
      
  • id,姓名,日期,人
  •   
     

用户:

     
      
  • id,name
  •   
     

如此:事件:

     
      
  • " 1"," Class trip"," May 2"," 1,2,5,6"
  •   
  • " 2","博物馆参观"," 5月14日"," 5,6,8,1"
  •   
     

用户:

     
      
  • " 1"," Edward"
  •   
  • " 2"," Dr。西门子"
  •   

1 个答案:

答案 0 :(得分:1)

我不建议将事件和与会者列表之间的关系存储到单个列中。这是非常糟糕的做法。

相反,我会使用第三个表来映射事件和与会者之间的关系。换句话说,使用外键创建一对多关系(主 - 细节,父 - 子)。

Check out this post for more information regarding database design patterns.

使用One-to-Many表,您可以编写一个简单的SQL查询来获取所需的数据。类似的东西:

SELECT Attendee FROM Event_Attendees WHERE Event LIKE $eventName

这将返回特定事件的所有与会者的数组。当然,您可能希望使用mysqli或PDO使用预准备语句。

这个Event_Attendees表基本上有两个主要列来建立关系:EventAttendee。我通常使用自动增量整数作为主键索引。