0

users と users_audit の 2 つのテーブルがあり、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;

クエリの目的は、特定の行 ID の最新の 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 |

ユーザーからのデータと各行 ID の users_audit からの date_created の 2 つの列を表示する必要があります。これは、各行 ID に対して 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 に答える