2011-03-21 101 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