php - 使用 PHP 从具有多个条目的多个表中查询 MySQL 数据

标签 php mysql database

我正在开发一个用于监测运动损伤的数据库。我有 2 张表,一张称为伤害,另一张称为伤害_列表。

受伤看起来像这样:

-----------------------------------------------------------------------
injury_id | name   | body_part  | first_mention | last_changed | status
-----------------------------------------------------------------------
|   2     |  Ben   |   arm      |   2013-06-08  |   2013-06-13 |   0  |
|   3     |  Rick  |   knee     |   2013-05-10  |   2013-06-12 |   0  |
|   4     |  Esther|   ankle    |   2013-05-26  |   2013-06-12 |   1  |
-----------------------------------------------------------------------

然后我们有伤害列表,我用它来存储物理治疗师和教练的更新

-----------------------------------------------------------------------
  list_id | injury_id | Comments               | trend | comment_added
-----------------------------------------------------------------------
|   1     |     2     | Complains a lot wo.... |   1   |   2013-06-01 |
|   2     |     2     | Gets a little bit be.. |   3   |   2013-06-08 |
|   3     |     2     | no changes so far..... |   2   |   2013-06-13 |   
|   4     |     4     | aches a lot, send t... |   1   |   2013-06-01 |
|   5     |     4     | Got a lot worse ne.... |   1   |   2013-06-08 |
|   6     |     4     | no changes so far..... |   2   |   2013-06-13 |   
-----------------------------------------------------------------------

趋势用于显示伤害是否恶化 (1)、好转 (2) 或没有变化 (3)

我对所有伤害有一个概述,我只使用伤害表和每个伤害的详细页面,我使用两个表中的信息,这一切都很好。

现在我希望趋势显示在主页的概述中,正如你所理解的,我只想要最新的趋势(基于comment_added)。我尝试了几次查询,但我似乎无法理解如何正确地调用数据。

我不太擅长连接,实际上我不知道这是否是解决方案,我希望有人可以帮助我:

$result = mysqli_query($con,"
SELECT b.injury_id 
     , bl.injury_id b.name
     , b.body_part
     , b.first_mention
     , b.last_changed
     , b.status 
  FROM injury b
  JOIN injury_list bl 
    ON bl.injury_id = b.injury_id 
 ORDER 
    BY status ASC
     , last_changed DESC;
");

预先感谢您与我一起思考。

最佳答案

这是另一种方法...

SELECT i.*
     , x.* 
  FROM injury i
  JOIN injury_list x 
    ON x.injury_id = i.injury_id
  JOIN 
     ( SELECT injury_id
            , MAX(list_id) max_list_id 
         FROM injury_list 
        GROUP 
           BY injury_id
     ) y 
    ON y.injury_id = x.injury_id 
   AND y.max_list_id = x.list_id;

关于php - 使用 PHP 从具有多个条目的多个表中查询 MySQL 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17092273/

相关文章:

mysql:计算所有组中的重复行

php - 数据库日期 = 今天的日期

mysql - 限制来自本地主机的 MySQL 连接以提高安全性

javascript - 在此 PHP 站点中找不到更改超全局变量的位置

PHP PDO fatal error

php - 限制 Twig 循环

mysql - 开放层 : How to create markers based on a MySQL database

PHP:如何使用 Twitter API 数据将推文中的 URL、提及和主题标签转换为链接?

php - MAX(expr) 有极限吗

javascript - 在 PHP 中增加格式化代码