我需要從多個表中查詢數據,下面是主要表(簡化)。從兩個表中獲取最小(優先級)的行
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