加入3个表,在其他表中有多个值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了加入3个表,在其他表中有多个值相关的知识,希望对你有一定的参考价值。
我有3张桌子。需要以我得到ResultTbl
的方式加入他们ProductMaster
PID Name Cost
1 Car 1000
2 Bike 500
ImageMaster
ImgId PID ImageName
1 1 car1.png
2 1 car2.png
3 1 car3.png
4 2 Bike1.png
5 2 Bike2.png
BidingMaster
ImgId PID BidCost userid
1 1 2000 1
2 1 2500 2
3 1 3000 1
4 2 1200 1
5 2 900 2
UserMaster
UserId Username Usertype
1 Test 1 1
2 Test 2 2
用户类型
Usertypeid usertypename
1 admin
2 regularuser
我需要以这样一种方式加入他们,即从Imagemaster获得产品成本和第一行的最高金额。
ResultTbl
PID Name Cost ImgName username usertype
1 Car 3000 Car1.png Test 1 admin
2 Bike 1200 bike1.png Test 2 regularuser
[如果某人没有出价,则将显示产品的成本,但如果某人已出价,则将显示最高出价。这将再次与另外2个表一起获得他的用户名和用户类型(简单表)。我已经处理过SQL代码,但是它一直缺少结果。
这是我尝试过的。。
SELECT a.PID ,a.Name, b.maxAmount, d.Img
FROM ProductMaster AS a
LEFT OUTER JOIN (
SELECT PID, MAX(Amount) AS maxAmount
FROM BidMaster
GROUP BY PID
) AS b ON a.PID = b.PID
FULL OUTER JOIN (
SELECT PID, ImageName AS Img, MAX(ProductId) AS macImg
FROM ImageMaster
GROUP BY PID, ImageName
) AS d ON a.PID = d.PID
我有3张桌子。需要以这样的方式加入他们:我得到ResultTbl ProductMaster PID名称成本1汽车1000 2自行车500 ImageMaster ImgId PID ImageName 1 1 car1.png 2 1 ...
答案
加入前,您可以使用子查询从imagemaster获得最大出价主表和第一行
另一答案
因此,您可以使用子查询来获取ImageName,并且需要一个窗口函数来获取相关的BidingMaster行,然后您就可以照常加入。
另一答案
您可以尝试使用窗口功能row_number()
。
以上是关于加入3个表,在其他表中有多个值的主要内容,如果未能解决你的问题,请参考以下文章