2 INNER JOIN对于使用相同外键的2列

问题描述 投票:-3回答:1

首先,我有这样的数据库:

和关系:

现在在.php我想创建表格,显示表格中的所有内容,但不是将ProductId和UpgradeProductId显示为数字,我想将它们显示为产品名称

问题是我该怎么办?我已经做到了

它就像这样出现了

我希望[UpgradeProductId]像[ProductId]一样作为产品名称出现,但我不知道如何编写它以连接SQL并得到结果。

php html sql database inner-join
1个回答
1
投票

我希望我能正确理解你的问题。

显示UpgradeProductId的ProductName的简单方法是列的SELECT语句。声明如下:

    SELECT UpgradeId, Productname, (SELECT Product.ProductName FROM Product WHERE Product.ProductId = Upgrade.UpgradeProductId), UpgradeDate, UpgradeDetail
    FROM Upgrade
    INNER JOIN Product ON Upgrade.ProductId = Product.ProductId
    INNER JOIN RepairMan ON Upgrade.RepairManId = RepairMan.RepairManId
    WHERE Upgrade.RepairManId = '$RepairManId'
    ORDER BY UpgradeId ASC

但我想,这不是最有效的解决方案。

要对连接执行相同操作,必须为连接的表使用别名。它看起来像这样:

    SELECT UpgradeId, P1.Productname, P2.Productname, UpgradeDate, UpgradeDetail
    FROM Upgrade
    INNER JOIN Product AS P1 ON Upgrade.ProductId = P1.ProductId
    INNER JOIN Product AS P2 ON Upgrade.UpgradeProductId = P2.ProductId
    INNER JOIN RepairMan ON Upgrade.RepairManId = RepairMan.RepairManId
    WHERE Upgrade.RepairManId = '$RepairManId'
    ORDER BY UpgradeId ASC

除此之外的另一件事。我不知道您正在使用哪个SQL,但请确保在ORDER命令中添加ASC或DESC。如果没有这种添加,某些类型的SQL往往不按预期排序。

© www.soinside.com 2019 - 2024. All rights reserved.