【问题标题】:Mysql Join on table twiceMysql加入表两次
【发布时间】:2011-12-01 23:30:44
【问题描述】:

我在尝试加入表格两次时遇到问题。

我有 3 个表:Users、Auctions、Bids

Auctions 和 Bids 都包含一个名为 user_ID 的列,该列与 Users 表 ID 相关。

每个的 user_ID 都与卖方(拍卖表)和获胜者(出价表)相关

我如何加入所有 3 个以便我有一行: 拍卖 ID、拍卖状态、卖家名称、卖家电子邮件、获胜者名称、获胜者电子邮件

我尝试进行内部连接但没有成功。

表结构如下:

用户表 ID, 用户登录, 用户邮箱

出价表 ID, 用户身份, auct_ID, 创建, 金额

拍卖表 ID, 用户身份, 标题, 结束时间

所以目前我有以下查询:

选择 a.ID 作为 auct_ID,a.status,s.user_email 作为卖方,w.user_email 作为投标人,b.amount,b.created FROM auctions INNER JOIN 出价 b ON b.auct_ID = a.id INNER JOIN users s ON a.user_ID = s.id INNER JOIN users w ON b.user_ID = w.id WHERE status='active' AND a.end_time

这给了我一个已过期拍卖的所有出价。我想要所有已过期且只想要最高出价者的拍卖。

【问题讨论】:

  • 发布您尝试过的内容 - 所以不是出租编码器
  • 能否请您发布所有三个表的 CREATE 语句以便更容易查看?

标签: mysql sql join


【解决方案1】:

尝试:

SELECT a.*, s.*, w.*, b.* FROM auctions a
INNER JOIN bids b ON b.auction_id = a.id
INNER JOIN users s ON a.user_ID = s.id 
INNER JOIN users w ON b.user_ID = w.id 
WHERE .....
ORDER BY b.amount DESC LIMIT 1

sw 表别名用于 sellerswinners

【讨论】:

  • 嘿都铎王朝感谢您的帮助。该查询似乎有效,但我如何将其限制为最高出价者?
  • 你可以说 SELECT TOP 1 a.*... 然后 ORDER BY bids 表中的金额以降序排列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-26
  • 2011-10-23
  • 2010-09-17
相关资源
最近更新 更多