MYSQL查询-我的大脑正在爆炸


MYSQL Queries - my brain is exploding

这是我在这里的第一个问题,如果我违反了任何礼仪,很抱歉。我有点喜欢编码,但有时我的大脑很难接受逻辑步骤的路径。

目前,我正在开发自己的小型网络应用程序,在那里我有公共活动,我正在制作自己的访客列表。

到那时,我已经解决了这些问题:(我想是的)

  • 从Facebook页面获取所有活动
  • 从当前事件视图获取所有与会者
  • 实时搜索功能和按字母顺序排列的数组

待办事项:

  • 完整的CHECK(检查)按钮功能-检查时,从lis
  • 其他分析功能

问题:

目前,我正在从JSON字符串中获取所有参与者,然后转换为数组,将其全部放入数据库中。我无法决定SQL逻辑。

我有所有人的列表-json->array->db,然后它从db中读取,并显示wich是否被检查,就像与json中的表进行比较一样。

当前的算法是获取json,在foreach循环中,每次我加载它时,都会使用INSERT IGNORE在DB中写入,它会忽略它是否是相同的用户ID,所以我有所有atende的数据库。

如何安排我的数据库?我在考虑制作桌子:

来宾-USERID;事件ID;名称;[用于所有人的庞大列表]checkins-USERID;CHECKEDEVENTID;日期时间;[用于获取统计数据]

我的目标是制作"签到"门应用程序,所以最终我看到,那些用户参加的此类活动比这些活动更多。。。

那么,我怎么能做出类似的统计数据,比如-EVENT-参加了X的Y人,以及更多的全局SQL查询,比如,USER Y来到了EVENTS A,B,C。或者,大多数检查都发生在时间跨度[可能是一些条形图或图表]。。。。

我应该为每个事件创建一个新的表来存储所有访客,以查看所有atendee统计信息,并检查表中的签入统计信息吗?

对于您所称的"检查"功能,听起来您需要(大致*)以下表格:

create table users
(
  userid float NOT NULL,
  username varchar(64)
);
create table events
(
  eventid float NOT NULL,
  eventname varchar(64),
  eventstart date,
  eventlength float 
 );
 create table checkin_activity
 (
   userid float not null,
   eventid float not null,
   checkin_time date
 );

*这是一个高度简化的数据库模式。您需要确保添加了必要的键、约束等,并确保列上的数据类型是适当的。我没有考虑这个快速的例子

使用USERS和EVENTS表中的条目,您将使用您所称的"检查"按钮填充CHECKIN_ACTIVITY表。您可以根据需要加入针对这些表的查询,以运行报告等

注意:您提到:

当前的算法是获取json,在foreach循环中,每次我加载它时,都会使用INSERT IGNORE在DB中写入,它会忽略它是否是相同的用户ID,所以我有所有atendees 的数据库

您应该避免在for循环中写入数据库(写入我上面没有说明的表;让我们称之为EVENT_AATTENDES表)。相反,构建一个INSERT ALL查询并执行一次,这样就不会多次命中数据库的事务处理程序n

INSERT ALL
  INTO event_attendees (eventid, name) VALUES (1, 'John') 
  INTO event_attendees (eventid, name) VALUES (1, 'Jane')
  INTO event_attendees (eventid, name) VALUES (1, 'Colin')
SELECT * FROM dual;

如果这种负载是你经常做的事情,这一点尤其重要。