0

わかりました、私はこのコードを持っています:

SELECT 
    COUNT(a.auction_id) AS amount, a.owner_id
FROM 
    auctions AS a
    INNER JOIN users AS u ON a.owner_id=u.user_id
    LEFT JOIN winners AS w ON a.auction_id=w.auction_id
WHERE 
    FROM_UNIXTIME(a.start_time) BETWEEN '2013-07-01 00:00:00' AND '2013-07-31 23:59:59' 
AND 
    a.owner_id IN (100012,100027,100030,100063,100065)
AND 
    a.active=1 
AND 
    a.approved=1 
AND 
    a.is_relisted_item=0 
AND 
    a.is_draft=0    
GROUP BY 
    a.owner_id
HAVING 
    amount > 4;

やりたいことは以下のようなものですが、書き方がわかりません..

その場合a.list_in = 'store' AND a.closed=1、結果セットに含めるには勝者テーブルに表示する必要があります。したがって、結果として含まれるには、基本的にテーブルにw.winner_idNULL を指定しないでください。winners

したがって、基本的に、a.list_in = 'store'それが問題なく含まれる必要がある場合は、含まれる場合は NULLa.list_in = 'store' AND a.closed=1にすることはw.winner_idできません。

これどうやってするの?

4

1 に答える 1

1
    SELECT 
    COUNT(a.auction_id) AS amount, a.owner_id
FROM 
    auctions AS a
    INNER JOIN users AS u ON a.owner_id=u.user_id
    LEFT JOIN winners AS w ON a.auction_id=w.auction_id
WHERE 
    FROM_UNIXTIME(a.start_time) BETWEEN '2013-07-01 00:00:00' AND '2013-07-31 23:59:59' 
AND 
    a.owner_id IN (100012,100027,100030,100063,100065)
AND 
    a.active=1 
AND 
    a.approved=1 
AND 
    a.is_relisted_item=0 
AND 
    a.is_draft=0 
AND (NOT(a.list_in = 'store' AND a.closed=1 ) OR (w.auction_id IS NOT NULL))   
GROUP BY 
    a.owner_id
HAVING 
    amount > 4;

これはうまくいくはずです

どこに余分な条件を追加しました

AND (NOT(a.list_in = 'store' AND a.closed=1 ) OR (w.auction_id IS NOT NULL))   
于 2013-08-01T09:21:19.593 に答える