MySQL查询内部最有效的查询方式

时间:2016-11-28 15:02:45

标签: php mysql

我只是学习PHP,我有一个问题 我只想说,我有MySQL表" A"

    Name | Job
 --------|---------
    Jynx | 1
   Micah | 4
   Nancy | 3
  Turah  | 1

另一张桌子" B"

JobId  | JobName
-------|-----------
   1   |  Lawyer
   2   |  Architec
   3   |  Farmer
   4   |  Mage
   5   |  Warrior

所以据说在php中我想绘制一个表格,显示表格的内容" A",而不是在" Job"上显示数字。 colomn,它们每个都显示表格" B"中的作业名称。 最有效的方法是什么? 现在,我只是想使用

$conn = My database connect setting
$sql = "SELECT * FROM tableA  ORDER BY Name";
$result = $conn->query($sql);
while($row = mysqli_fetch_assoc($result)) {
    echo "<tr><td>". $row['Name'] ."</td><td>";
    $sql2 = "SELECT * FROM tableB WHERE JobId=$row['Job']";
    $result2 = $conn->query($sql2);
    while($row2 = mysqli_fetch_assoc($result2)) {
        echo "<td>". $row2['JobName'] ."</td></tr>;
       }
    }

但如果有多个simillin colomn并且有多少行,那么它是否需要大量的计算过程?

有没有更有效的方法来做到这一点?

抱歉我的英文不好

感谢您的关注。

2 个答案:

答案 0 :(得分:2)

加入绝对是去这里的方式。

SELECT a.Name, b.JobName 
FROM tableA a
JOIN tableB b on (a.Job = b.JobId)
ORDER BY a.Name

答案 1 :(得分:0)

嗯,现在没时间学习JOIN并不容易,但后来我会学习它。

就目前而言,我只想改用ARRAY 所以在我绘制主表之前,我将支持表(表B)分配到关联数组

$sql = "SELECT * FROM tableB  ORDER BY Id";
$result = $conn->query($sql);
while($row = mysqli_fetch_assoc($result)) {
$job[$row['JobId']] = $row['JobName'];
}

在主桌上

$sql = "SELECT * FROM tableA  ORDER BY Name";
$result = $conn->query($sql);
while($row = mysqli_fetch_assoc($result)) {
    echo "<tr><td>". $row['Name'] ."</td><td>". $job[$row['Job']];
    }