【问题标题】:2 INNER JOIN For 2 colums that use the same foreign key2 INNER JOIN 对于使用相同外键的 2 列
【发布时间】:2018-03-04 15:44:55
【问题描述】:

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

还有关系:

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

问题是我该怎么做?我已经做了这个

它会像这样显示

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

【问题讨论】:

  • 很抱歉,您的问题不是很清楚。我无法弥合您粘贴的屏幕截图和帖子中的文字之间的差距。前两个屏幕截图中的表格是什么?我已经在您的上一个屏幕截图中看到了产品名称,那么问题出在哪里?
  • 表升级中有哪些列可用?您应该在结果中将 UpgradeProductId 替换为 UpgradeProductName 之类的内容。

标签: php html sql database inner-join


【解决方案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,但请务必将 ASC 或 DESC 添加到您的 ORDER 命令中。如果没有此添加,某些类型的 SQL 往往不会按照您的预期排序。

【讨论】:

  • 我现在试试,如果它有效,请告诉你,谢谢你的帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-23
  • 2019-04-09
  • 1970-01-01
  • 2012-03-02
  • 1970-01-01
相关资源
最近更新 更多