0

我有 2 个表 - users 和 users_audit,需要将 2 个单独查询的结果显示到 2 个相互关联的列中。我已经弄清楚了这两个问题。

查询用户:SELECT rowid,data FROM users WHERE columnid = 1 GROUP BY rowid;

+-------+------------+
| rowid | data       |
+-------+------------+
|     1 | John       |
|     2 | Abi        |
|     3 | Tony       |
|     4 | Gregg      |
|     5 | Jon        |
|     6 | Victor     |
|     7 | Daniel     |

查询 users_audit:SELECT date_created FROM users_audit WHERE rowid = 6 ORDER BY date_created DESC, date_created DESC LIMIT 1;

查询的目的是显示特定 rowid 的最新 date_created。

+---------------------+
| date_created        |
+---------------------+
| 2012-07-04 09:20:12 |
+---------------------+

表 users_audit 如下所示:

SELECT * FROM users_audit;

+-------+---------+--------------+-------------+---------------------+
|  id   |  rowid  | before_value | after_value | date_created        |
+-------+---------+--------------+-------------+---------------------+
|     1 |       6 | 3            | 5           | 2012-06-29 15:48:11 |
|     2 |       5 | Out (0)      | 2           | 2012-07-04 09:20:10 |
|     3 |       6 | 5            | 4           | 2012-07-04 09:20:12 |
|     4 |       7 | 3            | 6           | 2012-07-04 09:20:14 |
|     5 |       3 | 2            | 3           | 2012-07-04 09:20:16 |
|     6 |      15 | 6            | 5           | 2012-07-04 09:20:22 |

我需要为每个 rowid 显示 2 列 - 来自用户的数据和来自 users_audit 的 date_created。这意味着必须为每个 rowid 运行 users_audit 查询(在循环中?)。

php中显示的预期结果是:

+------------+----------------------+
| data       | date_created         |
+------------+----------------------+
| John       | (latest date)        |
| Abi        | (latest date)        |
| Tony       | (latest date)        |
| Gregg      | (latest date)        |
| Jon        | (latest date)        |
| Victor     | 2012-07-04 09:20:12  |
| Daniel     | (latest date)        |

如何在 php 中实现这一点?

4

1 回答 1

0

为什么你不能只创建一个视图并使用连接来创建你想要的表?

 SELECT users.data, users_audit.date_created FROM users 
     INNER JOIN users_audit ON users.rowid = users_audit.rowid

或者我在这里错过了什么?

编辑

 SELECT users.data, users_audit.date_created FROM users 
     INNER JOIN users_audit ON users.rowid = users_audit.rowid
     WHERE users_audit.date_created = (SELECT MAX(date_created) from users_audit
 GROUP BY rowid)

我相信这应该工作..?让我知道。

于 2012-07-04T15:04:24.430 回答