【问题标题】:Fetch and echo data from second table based on value inside first table根据第一个表中的值从第二个表中获取和回显数据
【发布时间】:2018-10-27 17:35:41
【问题描述】:

我正在尝试创建一个包含客户信息的表格/图表。

我正在为客户设置一个“工作订单状态”status_id 值,当他/她在我们的计算机中签入时作为一个数值。

在另一个表中,我使用 status_id 和当前状态类型的 status_text 存储状态。所以我可以根据工作类型添加更多状态。

我最初是使用这样的 Case 开关,并且 case 编号将对应于行内的值。

$sql    = "SELECT * FROM workorder";
$result = $conn->query($sql);
   while($row = mysqli_fetch_array($result))  {

//case switch
 $repair_status_color = "";
        $repair_status_text = "";
        switch ($row["status_id"]) {
            case 0:
                $color = "red";
                $repair_status_text = "Open";    
                break;
            case 1:
                $color = "blue";
                $repair_status_text = "Waiting";
                break;
            case 2:
                $color = "blue";
                $repair_status_text = "Waiting Parts";
                break;
        }

        echo "<td>" . $repair_status_text . "</td>";

}

我正在尝试从工作订单表中获取值,对照状态表检查它,然后从表 Status 中回显来自表 workorder

我试过这个代码

 $sql = "SELECT * FROM workorder INNER JOIN status ON workorder.status_id = status.status_id";
echo $row["status_text"]

但我不确定我做得对。有人注意到我做错了吗?

【问题讨论】:

    标签: php sql join html-table echo


    【解决方案1】:

    您还没有名为status_text 的列,因此,$row['status_text'] 将被取消设置(根据您的屏幕截图)如果有,您必须选择它。您可以使用它来访问它:

    SELECT w.*, s.status_name AS 'status_text'
    FROM workorder w
    INNER JOIN status s
    ON w.status_id = s.status_id
    

    或者,如果您有 status_text 列,您可以这样做:

    SELECT w.*, s.status_text
    FROM workorder w
    INNER JOIN status s
    ON w.status_id = s.status_id
    

    您现在可以像这样访问它:

    while($row = mysqli_fetch_array($result))  {
        echo $row['status_text'];
    }
    

    【讨论】:

    • 谢谢!我已经解决了你的问题并弄清楚了,我在哪里添加逗号来获取多个关联,假设我也想从 pay_id 支付列中获取 pay_text。
    • w.pay_text, w.pay_id, s.status_text
    • 付款在不同的表中,我该如何在此查询中引入另一个表 PAY? SELECT w.*, s.status_text, p.pay_text FROM WORKORDER w INNER JOIN STATUS s ON w.status_id = s.status_id INNER JOIN PAY p ON w.pay_id = s.pay_id 是正确的方法吗,做多个内连接? @Jaquarh
    • 是的,完全一样 :) 只要正确交叉引用它们,您就可以拥有任意数量的内部连接
    • 你好@jaquarh,如果可能的话,我还有一个问题需要你帮忙,如果可能的话,请告诉我,我可以将你链接到堆栈交换。
    猜你喜欢
    • 2020-04-08
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 2018-07-13
    • 2020-10-09
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    相关资源
    最近更新 更多