请教sql多表联查的问题

发布于 2022-09-12 03:04:34 字数 426 浏览 16 评论 0

有三个表,如下:
产品表goods:
gid,title,price
1 , 华为 , 4299
2 , Apple , 3299

用户表users:
uid,nickname,avatarUrl
1 , 小明 , 头像链接
2 , 小李 , 头像链接

出价表bids:
(status:0无效1有效,一个uid在同一个gid只能有一个有效价格)
id,uid,gid,price,status
1 , 1 , 1 , 2344 , 1
2 , 1 , 1 , 2345 , 0
2 , 1 , 1 , 1345 , 0

需求:查询所有商品,当前用户已出价的商品要显示当前有效出价并且显示对应昵称和头像,未参与出价的商品照常显示

请问该如何使用查询语句?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半山落雨半山空 2022-09-19 03:04:34
select goods.title, goods.price, bids.price as 有效出价, users.nickname, users.avatarUrl
from goods,
     bids,
     users
where goods.gid = bids.gid
  and bids.status = 1
  and users.uid = bids.uid

union all

select title, price, null as 有效出价, null as nickname, null as avatarUrl
from goods
where gid not in (select gid from bids)
穿越时光隧道 2022-09-19 03:04:34
SELECT
    g.gid,
    g.title,
    g.price,
    u.nickname,
    u.avatarUrl,
    b.price bids_price 
FROM
    goods g
    LEFT JOIN bids b ON g.gid = b.gid AND b.STATUS = 1
    LEFT JOIN users u ON b.uid = u.uid 
  ORDER BYb.STATUS DESC;

你试试这个,是不是你想要的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文