如何合并两个关联不同INNER JOIN的SELECT查询获取卖家与买家姓名
解决方案
你只需要给UTILISATEURS表设置两个不同的别名,分别关联卖家身份和买家身份,即可在单个查询中同时返回两个字段:
SELECT u_seller.nom AS nameSeller, u_buyer.nom AS nameCustomer FROM ENCHERES e INNER JOIN ARTICLES_VENDUS ac ON ac.no_article = e.no_article -- 关联卖家信息:商品表的用户ID对应卖家ID INNER JOIN UTILISATEURS u_seller ON u_seller.no_utilisateur = ac.no_utilisateur -- 关联买家信息:竞拍表的用户ID对应出价买家ID INNER JOIN UTILISATEURS u_buyer ON u_buyer.no_utilisateur = e.no_utilisateur -- 保留你原有的筛选条件,可按实际需求调整 WHERE ac.nom_article LIKE '%ta%' AND e.no_utilisateur = 57
如果需要获取每个商品最新的竞拍记录,可以使用开窗函数过滤:
WITH RankedBids AS ( SELECT u_seller.nom AS nameSeller, u_buyer.nom AS nameCustomer, ROW_NUMBER() OVER (PARTITION BY e.no_article ORDER BY e.date_enchere DESC) AS bid_rank FROM ENCHERES e INNER JOIN ARTICLES_VENDUS ac ON ac.no_article = e.no_article INNER JOIN UTILISATEURS u_seller ON u_seller.no_utilisateur = ac.no_utilisateur INNER JOIN UTILISATEURS u_buyer ON u_buyer.no_utilisateur = e.no_utilisateur WHERE ac.nom_article LIKE '%ta%' ) SELECT nameSeller, nameCustomer FROM RankedBids WHERE bid_rank = 1
注:你提供的测试数据中商品名为
Jouet,如果要在测试库中验证效果,可将模糊匹配条件改为ac.nom_article LIKE '%et%',买家ID条件改为e.no_utilisateur = 1即可得到示例结果。
执行结果
| nameSeller | nameCustomer |
|---|---|
| bryan | john |
内容的提问来源于stack exchange,提问作者val.brlt
相关产品推荐
相关产品推荐

