首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单的SQL内部连接查询-无法工作

简单的SQL内部连接查询-无法工作
EN

Stack Overflow用户
提问于 2015-04-02 04:42:15
回答 2查看 204关注 0票数 1
代码语言:javascript
复制
    SELECT ai.auction_item_id, ai.starting_bid, b.bid_amount, i.*
    FROM
    auction_item as ai, //Table contains auction specific details about the item
    item as i //Table contains general details about the item
    INNER JOIN (
            SELECT auction_item_id, bid_amount
            FROM bid xb //Table contains bids on item
            ORDER BY amount DESC
            LIMIT 1 ) b 
     ON b.auction_item_id = ai.auction_item_id
    WHERE
    ai.auction_id = 4 AND
    i.id = ai.listings_id

    ORDER BY RAND()
    LIMIT 4

目前,通过上述查询,我可以从当前的活动拍卖(拍卖#4)中获得4个随机项目。但他们现在都是以相同的最高出价(从内部加入)回来。每个项目都应该有自己的最高出价金额(从内部加入)-除非该项目没有出价,那么它应该是0(或什么)。

我在这里做错什么了?bid表对每个出价都有一行,因此在内部联接中设置了限制1和desc命令,因为我希望外层部分中的每个项目都有最高的出价。(如果有投标的话)

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-02 05:13:19

尝试一个子查询。如果由于0的缘故,在出价表中没有条目,您将得到一个coalesce

代码语言:javascript
复制
SELECT 
    ai.auction_item_id, ai.starting_bid, 
    Coalesce((SELECT max(xb.bid_amount)
              FROM bid xb
              WHERE xb.auction_item_id = ai.auction_item_id), 0) AS bid_amount,
    i.*
FROM auction_item AS ai
INNER JOIN item AS i ON i.id = ai.listings_id
WHERE ai.auction_id = 4 
ORDER BY Rand()
票数 2
EN

Stack Overflow用户

发布于 2015-04-02 04:55:17

像这样吗?

代码语言:javascript
复制
SELECT ai.auction_item_id, ai.starting_bid, b.bid_amount, max(bid_amount)
    FROM auction_item as ai
      inner join bid b
        on ai.auction_item_id = b.auction_item_id
      inner join items i
        on i.id = ai.listings_id
    where ai.auction_id = 4

将表架构添加到问题中将有帮助。

编辑

代码语言:javascript
复制
SELECT ai.auction_item_id, ai.starting_bid, IFNULL(max(bid_amount), 0) max_bid
        FROM auction_item as ai
          left join bid b
            on ai.auction_item_id = b.auction_item_id
          inner join items i
            on i.id = ai.listings_id
        WHERE ai.auction_id = 4
        GROUP BY ai.auction_item_id

给你,包括没有出价的项目。

如果我弄错了,请告诉我:http://sqlfiddle.com/#!9/0eae7/2

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29405094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档