查询和合并不同的表

时间:2019-05-02 03:00:00

标签: php jquery mysql

我有三个要查询的数据表,然后根据一个公共字段(即日期字段)将它们分组在一起。这三个表的架构如下所示:

糖桌

Name                  Type
sugar_id (Primary)    int(11)
user_id (Foreign Key) int(11)
read_date             date
read_time             time
reading               int(11)

压力表

Name                  Type
pressure_id (Primary) int(11)
user_id (Foreign Key) int(11)
read_date             date
read_time             time
systolic              int(11)
diastolic             int(11)

饮食表

Name                  Type
dietar_id (Primary)   int(11)
user_id (Foreign Key) int(11)
entry_date            date
entry_time            time
quantity              varchar(64)
food                  varchar(64)
notes                 varchar(1000)

如上所述,我要在所有三个表中进行分组的日期字段(糖和压力中的read_date和饮食中的entry_date)。

我想对每个日期进行操作,如果每个表都有一个条目,则在每个表中返回一个列表项,然后为包含相同日期的每一行列出一个带有列表项的列表。一个例子是:

<ul>
  <li>
    Sugar
    <ul>
      <li>[reading] taken at [time]</li>
  </li>
  <li>
    Pressure
    <ul>
      <li>[systolic]/[diastolic] taken at [time]</li>
      <li>[systolic]/[diastolic] taken at [time]</li>
    </ul>
  </li>
  <li>
    Dietary
    <ul>
      <li>[quantity] [food] eaten at [time]</li>
    </ul>
  </li>
</ul>

我最初的想法是创建一个存储DOM元素的集合,分别查询每个表,遍历每一行,检查集合中是否存在日期,如果是,则将父项<li>附加到各自项目,如果没有,则在数组中创建一个新项目,该项目将日期存储为键,并创建父项<li>作为值。

然后我开始认为我可能可以仅使用SQL来执行此操作。但是,我的SQL并不强大,说实话,我不确定在查询中返回DOM是否是最佳方法。

所以我对所有人的问题有两个方面。首先,我应该走哪条路:使用PHP / jQuery或SQL构建DOM?其次,如果答案是后者,那么考虑到我的日期字段命名不相同且表的架构变化足以使联合变得复杂,我该如何解决这个问题?

我使用的语言是:jQuery 3.4.1,PHP 7.3.0和MySQL(尽管我不确定版本)。

1 个答案:

答案 0 :(得分:-1)

使用user_id的内部联接查询选择记录,并按功能对记录表进行排序。user_id,table.read_date