我需要从多个表中查询数据,下面是主要表(简化)。从两个表中获取最小(优先级)的行
Project
+-----+-------+-------+
| pid | pname | status| //status: 0 = pending, 1 = complete
+-----+-------+-------+
| 1 | Proj1 | 0 |
| 2 | Proj2 | 1 |
| 3 | Proj3 | 0 |
+-----+-------+-------+
Module
+-----+--------+-------+----------+-----------------+
| mid | pid | status| priority |modulecategoryid |
+-----+--------+-------+----------+-----------------+
| 1 | 1 | 1 | 1 | 1 |
| 2 | 1 | 0 | 2 | 3 |
| 3 | 3 | 1 | 1 | 1 |
| 4 | 3 | 0 | 2 | 3 |
| 5 | 3 | 0 | 3 | 5 |
+-----+--------+-------+----------+-----------------+
Task
+----+--------+-------+----------+-----------------+
| id | mid | status| priority | taskcategoryid |
+----+--------+-------+----------+-----------------+
| 1 | 2 | 1 | 2 | 2 |
| 2 | 2 | 0 | 1 | 1 |
| 3 | 4 | 1 | 1 | 2 |
| 4 | 4 | 1 | 2 | 3 |
| 5 | 4 | 0 | 3 | 4 |
| 6 | 5 | 0 | 1 | 1 |
+----+--------+-------+----------+-----------------+
我正在尝试根据模块优先级和任务优先级获取所有可以首先启动的未决项目的待处理任务。即对于Proj3,具有优先级1的模块已完成,所以我应该获得模块2的第一优先级待定任务。
我需要为每个未完成项目使用modulecategoryid和taskcategoryid获得最前面的任务,以获取其相关信息,例如
+-----+--------+-----+------------------+----------------+
| pid | mid | tid | modulecategoryid | taskcategoryid |
+-----+--------+-----+------------------+----------------+
| 1 | 2 | 2 | 3 | 2 |
| 2 | 4 | 5 | 3 | 4 |
+----+---------+-----+------------------+----------------+
我是MySql的新手,我尝试过使用多个连接进行查询,并通过projectids和min(priority)对它进行分组以获得所需的结果。但不在组中的列从聚合中随机提取。
我已经看到这个答案SQL Select only rows with Max Value on a Column但是这只能解决一个表中数据的问题。
我可以得到一些帮助吗? 如果需要,我可以发布我的查询,但它得到错误的数据。
如果您仍在挣扎,请参阅http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-tobe -a-very-simple-sql-query – Strawberry