【问题标题】:MYSQL Queries - my brain is explodingMYSQL 查询 - 我的大脑正在爆炸
【发布时间】:2016-02-19 02:05:33
【问题描述】:

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

目前我正在开发自己的小型网络应用程序,在那里我举办公共活动,并且我正在制作自己的客人名单。

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

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

待办事项:

  • 完整的 CHECK 按钮功能 - 选中时,会从 利斯;
  • 其他分析功能。

问题:

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

我有所有人员列表 - json->array->db 然后它从 db 中读取并显示检查到一个不检查,例如与来自 JSON 的表进行比较。

当前算法是 - 获取 json,并且在 foreach 循环中,每次我加载它都会写入 DB,使用 INSERT IGNORE 它会忽略它是否是相同的用户 ID,所以我拥有所有参与者的 db。

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

客人 - USERID ;事件编号;姓名; [对于所有人的巨大名单] 签到 - 用户 ID;已检查事件ID;约会时间; [用于获取统计信息]

我的目标是制作“签到”门应用程序,所以最后我看到,那些用户参加这类活动的次数比这些人多……

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

我应该为每个活动创建新表来存储所有来宾以查看所有参加者统计信息,并检查表以获取签到统计信息吗?

【问题讨论】:

  • 检查按钮发送查询并写入用户 X 在日期的事件 Y 中检查。我现在如何将我的 json 输出与签入的结果进行比较?

标签: php mysql arrays json duplicates


【解决方案1】:

对于您所说的“检查”功能,听起来您需要(大致*)下表:

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 循环中,每次我加载它时都会将它写入 DB,使用 INSERT IGNORE 它会忽略它是否是相同的用户 ID,所以我拥有所有参与者的 db

您应该避免在 for 循环中写入数据库(写入我上面没有说明的表;我们称它为 EVENT_ATTENDEES 表)。相反,构建一个 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;

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

【讨论】:

  • 谢谢。是的,目前我在每个循环中都写了所有的客人,忽略了重复。顺便说一句 - 我想插入中断,而不是提交我的答案:
猜你喜欢
  • 2015-10-14
  • 2016-03-05
  • 1970-01-01
  • 2012-07-17
  • 2013-02-22
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 2021-12-04
相关资源
最近更新 更多