私は現在、オークション システムに取り組んでおり、機能はすべて完了しています。ここで、ユーザーが現在入札しているアイテムの数を示すカウントをユーザーのプロファイルに追加する必要があります。
システムは 2 つの主要なテーブルで構成されています (もちろんシステムには追加のテーブル機能がありますが、この問題に関連するテーブルはこれらだけです)。
item_sales
:
+-----+------------------+------------+-------------+---------+
| id | selling_format | duration | list_date | buyer |
+-----+------------------+------------+-------------+---------+
item_sales_bids
:
+-----+-------------+-----------+---------------+-----------+--------+
| id | sale_item | user_id | current_bid | max_bid | date |
+-----+-------------+-----------+---------------+-----------+--------+
item_sales_bids
. date
入札時間の Unix タイムスタンプです。
次のクエリを使用して、特定のユーザーが行ったすべての入札の数を簡単に取得できます。
SELECT COUNT(DISTINCT(`item_sales_bids`.`user_id`)) AS `total`,
SUM((`sale`.`list_date` + (`sale`.`duration` * 86400)) - UNIX_TIMESTAMP()) AS `endTime`
FROM `item_sales_bids`
INNER JOIN `item_sales` `sale` ON `item_sales_bids`.`sale_item` = `sale`.`id`
WHERE `user_id` = 1
GROUP BY `sale_item`
HAVING `endTime` > 0
私がやりたいことは、上記と同様のクエリを実行することですが、指定されたユーザーが現在の最高入札者であるレコードのみを含めます (つまり、特定のアイテムの入札セットの最大 ID エントリのuser_id
値はユーザーに = です)。
残念ながら、これを達成する方法について途方に暮れています。
支援するために SQLFiddle をセットアップしました > http://sqlfiddle.com/#!2/b98e4/3