2

「リスト」と「入札」の 2 つのテーブルがあります。end_date が過ぎた、特定のユーザーが入札したすべてのリストを返すクエリがあります。私がしなければならないことは、結果をさらに制限して、ユーザーが入札し、最後の入札者であるリストだけを見つけることです. これが私がこれまでに持っているクエリです...

SELECT listings.end_date, listings.user_id, listings.title, listings.auc_fp, listings.id, listings.auc_image1 
FROM listings INNER JOIN bids ON listings.id = bids.listing_id 
WHERE bids.user_id=$userid 
AND listings.end_date < NOW() 
ORDER BY list_ts DESC"

私はサブクエリが苦手で、"bids" テーブルですべてのユーザーの入札を検索するために、ここでサブクエリが必要になると想定しています。テーブル。私の入札表の列は、listing_id、user_id、bid、bid_ts です。

+------------+---------+------+---------------------+
| listing_id | user_id | bids | bid_ts              |
+------------+---------+------+---------------------+
|  1         | 10      | 100  | 2012-11-16 00:54:03 |
|  1         | 11      | 101  | 2012-11-16 00:54:04 |
|  2         | 10      | 33   | 2012-11-16 00:54:03 | 
|  2         | 11      | 34   | 2012-11-16 00:54:04 |
|  2         | 12      | 35   | 2012-11-16 00:54:05 |
+------------+---------+------+---------------------+

助けてくれてありがとう

4

1 に答える 1

4
SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT listing_ID, user_ID, MAX(bid_ts) maxDate
            FROM tableName
            GROUP BY listing_ID, user_ID
        ) b ON  a.listing_ID = b.listing_ID AND
                a.user_ID = b.user_ID AND
                a.bid_ts = b.maxDate
于 2012-12-27T05:55:40.527 に答える