mysql 如何获取两个没有外键关系的表的记录?

gopyfrb3  于 2023-03-07  发布在  Mysql
关注(0)|答案(1)|浏览(169)

你好任何人都可以帮我解决这个问题
我有3个表FundsPlanningGradeMstSupplierMst
我需要像这样的列SupplierIdWeightLoadedDeliveryDateInvoiceAmountGradeName
但问题是FundsPlanningGradeMst之间没有关系。
因此GradeName列存在于GradeMst表中。
还有一个表PurchaseContract,它与SupplierIdGradeId有外键关系,因此我可以找到Grade的Id。
使用下面的查询,我可以得到等级列的记录

SELECT GradeId, Grade 
FROM GradeMst 
WHERE GradeId In (SELECT Gradeid FROM PurchaseContract WHERE SupplierId=2)

使用下面的查询,我可以找到SupplierIdWeightLoadedDeliveryDateInvoiceAmount

SELECT FP.SupplierId,SM.SupplierId,FP.WeightLoaded,FP.DeliveryDate,FP.InvoiceAmount 
FROM FundsPlanning FP
INNER JOIN SupplierMst SM
ON FP.SupplierId=SM.SupplierId and SM.SupplierId=2

如何合并这两个表的结果集?

gdrx4gfi

gdrx4gfi1#

您可以尝试连接所有表,但需要注意表之间的关系(1-1、1-多、多-多),因为最终可能会得到重复的行

SELECT
    FP.SupplierId,
    SM.SupplierId,
    FP.WeightLoaded,
    FP.DeliveryDate,
    FP.InvoiceAmount,
    GM.GradeName
FROM FundsPlanning FP, 
    SupplierMst SM,
    PurchaseContract PC,
    GradeMst GM
WHERE 
    FP.SupplierId = SM.SupplierId 
    AND PC.SupplierId = FP.SupplierId
    AND GM.GradeId = PC.GradeId
    AND SM.SupplierId = 2

相关问题