将多个表链接在一起以从每个表中获取信息

时间:2016-09-11 10:48:57

标签: sql database join

我正在创建一个页面,显示已扫描进出办公室的设备的信息。我希望它显示的方式是

设备名称用户(Headtech)使用的事件返回(是/否)

问题是SQL表到处都是,并且加入它们都证明是困难的。需要有一个链表通过三个表来获得Head技术名称,这不是我的设计,我无法改变它。

我目前拥有什么

     $select = mysqli_query($con, "SELECT *
                                  FROM equipment 
                                  JOIN pay 
                                    ON pay.eventid = equipment.eventid
                                  JOIN personnel 
                                    ON personnel.workerid = (pay.eventid WHERE role = 'aht')
                                  JOIN events
                                    ON events.id = equipment.eventid
                                  WHERE status='3' 
                                  ORDER By timeOut DESC");
    while($row = mysqli_fetch_array($select)) {
        $name = $row['name'];
        $timeIn = $row['timeIn'];
        $timeOut = $row['timeOut'];
        $eventID = $row['eventid'];                     
      echo "<div><div class='rowBoxS'>$name</div>";
        $htName = $row['personnel.first'] . " " . $row['perosnnel.last'];
        echo "<div class='rowBoxS'>$htName</div>";  
            $event = $row['eventName'];                
            echo "<div class='rowBoxS'>$event</div>";

            if ($timeOut > 0){
              echo "<div class='rowBoxS'>$</div></div>";
            }
            else{
                echo "<div class='rowBoxS'>Failed to return</div></div>";
            }

这显然不能按预期工作,而且我非常清楚,这可能不是加入的方式,尤其是pay.eventid WHERE role ='aht'位。我想知道是否有适当的方法来解决这个问题。我尝试查找它,但大多数人可能都有他们正在使用的干净数据库,并且不可能遇到这个问题。

编辑: 所有表都在同一台服务器上。问题是,如果我想得到某个人的姓名,你需要使用pay表上的设备中的eventid行找到该id,然后通过'role'行找到具有AHT角色的用户,然后将那些personid人员带入人员表在那里你终于找到了人名。

0 个答案:

没有答案