2011-03-21 49 views
3

SQL查询仍然是我最薄弱的一点,所以在这里我还有另一个SQL问题。SELECT的一个小SQL查询问题

想象一下,我有两个表:拍卖出价。表拍卖包含我的拍卖,表格出价包含每次拍卖的出价列表。

现在我选择的值如下:

SELECT 
    `auction_title`, 
    `auction_seo_title`, 
    `auction_description_1`, 
    `auction_unixtime_expiration`, 
    `auction_startPrice`, 
    MAX(`bids`.`bid_price`) as `bid_price` 
    FROM 
    `auctions` 
    LEFT JOIN `bids` ON `auctions`.`auction_id`=`bids`.`bid_belongs_to_auction` 
    ORDER BY 
    `auction_unixtime_expiration` 
    ASC 
    LIMIT 5 

查询工作,但它有一个有点赶它:它仅选择那些拍卖,其中有内部的至少一个对应的值出价表。这意味着如果我有一个没有出价的新拍卖,查询不会返回这个拍卖,但我也想要它!

我相信对于至少具有高于平均SQL技能的人来说,这是一个非常简单的问题。我希望有这样的人来:)前提前致谢!

+0

这可能是由于'LIMIT'造成的问题...您是否尝试了没有'LIMIT',或者您应该尝试'RIGHT JOIN' – diEcho 2011-03-21 04:35:39

+2

您发布的查询是无效的,有一个'GROUP BY'子句缺失。 – 2011-03-21 04:35:42

+1

由于您使用的是'LEFT JOIN',因此您必须获得**全部**拍卖才能获得与其相关的出价或填充空值。所以再仔细一次;-) – zerkms 2011-03-21 04:36:33

回答

1
SELECT 
    `auction_title`, 
    `auction_seo_title`, 
    `auction_description_1`, 
    `auction_unixtime_expiration`, 
    `auction_startPrice`, 
    MAX(`bids`.`bid_price`) as `bid_price` 
FROM 
    `auctions` 
LEFT JOIN `bids` ON `auctions`.`auction_id`=`bids`.`bid_belongs_to_auction` 
GROUP BY `auction_id` 
ORDER BY `auction_unixtime_expiration` ASC 

试试看。假设有效,您可以将LIMIT添加到最后。

+0

'GROUP BY'在'ORDER BY'前面 – 2011-03-21 04:45:23

+0

我很抱歉,它很晚。 – Prisoner 2011-03-21 04:50:03