0

私のIDが結果に存在し、TRUEを返す場合、MySQLテーブルをチェックインする方法ですが、そのグループの最後のレコードではなく、レコードのグループをチェックしたいので、これは少し複雑です。動作しません$session_user_id。GROUP OFに存在するかどうかを確認したいのですがauction_bid_item_id、最後の行は WINNING ROW であるため、最後の行は確認しません。

CREATE TABLE `auction_bids` (   
    `auction_bid_id` int(11) NOT NULL AUTO_INCREMENT,   
    `auction_bid_user_id` int(11) NOT NULL,  
    `auction_bid_seller_id` int(11) NOT NULL,   
    `auction_bid_item_id` int(11) NOT NULL,   
    PRIMARY KEY (`auction_bid_id`) 
);

MySQL クエリ:

SELECT * FROM auction_bids 
WHERE auction_bid_user_id = '$session_user_id' 
GROUP BY auction_bid_item_id;
4

2 に答える 2

0

ユーザーがそのグループに属しているかどうかを判断する副選択に対して結合します。

つまり、次のようにすると、入札単価と、ユーザーが見つかったかどうかを示すフィールドが取得されます。

SELECT auction_bids.*, IF(Sub1.auction_bid_item_id IS NULL, 'User not found', 'User found')
FROM auction_bids 
LEFT OUTER JOIN
(
    SELECT DISTINCT auction_bid_item_id 
    FROM auction_bids 
    WHERE auction_bid_user_id = '$session_user_id'
) Sub1
ON auction_bids.auction_bid_item_id = Sub1.auction_bid_item_id
GROUP BY auction_bids.auction_bid_item_id

編集 - これを試して、最新の入札を無視してください

SELECT auction_bids.*, IF(Sub1.auction_bid_item_id IS NULL, 'User not found', 'User found')
FROM auction_bids 
LEFT OUTER JOIN
(
    SELECT DISTINCT auction_bids.auction_bid_item_id 
    FROM auction_bids 
    LEFT OUTER JOIN
    (
        SELECT auction_bid_item_id, MAX(auction_bid_id) AS LastBid
        FROM auction_bids
        GROUP BY auction_bid_item_id
    ) Sub2
    ON auction_bids.auction_bid_item_id = Sub2.auction_bid_item_id
    AND auction_bids.auction_bid_id =  Sub2.LastBid
    WHERE Sub2.auction_bid_item_id IS NULL
    AND auction_bid_user_id = '$session_user_id'
) Sub1
ON auction_bids.auction_bid_item_id = Sub1.auction_bid_item_id
GROUP BY auction_bids.auction_bid_item_id
于 2013-07-12T09:22:36.313 に答える