私はチェックインとチェックアウト機能を備えたPHPとMySQLのシンプルなプロジェクトに取り組んでいます。1つのテーブルの行をマージすると重複した結果が表示される
単一のテーブルで行をマージする際に少し問題があります。以下は、行にマージせずに表示できる生データです。
mysql> SELECT * FROM clock; +--------+---------+---------------------+----------+ | log_id | user_id | xtimestamp | text | +--------+---------+---------------------+----------+ | 1 | 1000 | 2012-05-10 07:47:06 | CHECKIN | | 2 | 1003 | 2012-05-10 07:47:23 | CHECKIN | | 3 | 1002 | 2012-05-10 07:47:36 | CHECKIN | | 4 | 1002 | 2012-05-10 07:47:49 | CHECKOUT | | 5 | 1003 | 2012-05-10 07:48:11 | CHECKOUT | | 6 | 1000 | 2012-05-10 07:48:23 | CHECKOUT | | 7 | 1000 | 2012-05-10 07:48:52 | CHECKIN | +--------+---------+---------------------+----------+
ここに私のSQLクエリは、チェックインとチェックアウトのビューを持っている単一のテーブルに行をマージすることです。
SELECT a.log_id as 'ID'
, a.user_id as 'User_ID'
, a.xtimestamp as 'CHECKIN'
, b.xtimestamp as 'CHECKOUT'
FROM clock a, clock b
WHERE a.info = 'CHECKIN'
AND b.info = 'CHECKOUT'
AND a.user_id = b.user_id
GROUP BY a.log_id;
次に、クエリの結果を示します。
+----+---------+---------------------+---------------------+
| ID | User_ID | CHECKIN | CHECKOUT |
+----+---------+---------------------+---------------------+
| 1 | 1000 | 2012-05-10 07:47:06 | 2012-05-10 07:48:23 |
| 2 | 1003 | 2012-05-10 07:47:23 | 2012-05-10 07:48:11 |
| 3 | 1002 | 2012-05-10 07:47:36 | 2012-05-10 07:47:49 |
| 7 | 1000 | 2012-05-10 07:48:52 | 2012-05-10 07:48:23 |
+----+---------+---------------------+---------------------+
あなたは上記の結果を見ることができるように、4つのレコードがあります何のチェックアウトの記録はまだありません戻りますが、それはuser_idは1000年であるため、ID 7に3である必要があり、ID 1およびID 7は、同じチェックアウトの日付を持っています。誰もが素晴らしいアイデアを持っている場合は、私が達成したい何
この
+----+---------+---------------------+---------------------+
| ID | User_ID | CHECKIN | CHECKOUT |
+----+---------+---------------------+---------------------+
| 1 | 1000 | 2012-05-10 07:47:06 | 2012-05-10 07:48:23 |
| 2 | 1003 | 2012-05-10 07:47:23 | 2012-05-10 07:48:11 |
| 3 | 1002 | 2012-05-10 07:47:36 | 2012-05-10 07:47:49 |
| 7 | 1000 | 2012-05-10 07:48:52 | null |
+----+---------+---------------------+---------------------+
またはこのような
+----+---------+---------------------+---------------------+
| ID | User_ID | CHECKIN | CHECKOUT |
+----+---------+---------------------+---------------------+
| 1 | 1000 | 2012-05-10 07:47:06 | 2012-05-10 07:48:23 |
| 2 | 1003 | 2012-05-10 07:47:23 | 2012-05-10 07:48:11 |
| 3 | 1002 | 2012-05-10 07:47:36 | 2012-05-10 07:47:49 |
+----+---------+---------------------+---------------------+
ようなものです..おかげで多くのことを共有してください。
。これがあなたの問題の理解を損なうとは思っていませんが、一貫性のあるように質問を編集したいかもしれません。 – eggyal
@eggyal、あなたはポイントを得て、あなたは私にアイデアを与え、log_idが原因です。私は自分のSQLを更新し、今すぐ動作します。 –
解決策を回答として投稿する必要があります。一定の時間が経過すると、それを受け入れることができます。 – Ilion