2016-11-28 44 views
0

我只是学习PHP的,我有一个问题 我们只想说,我有MySQL表“A”最有效的方式,以MySQL查询中查询

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>; 
     } 
    } 

的但不会是占用大量计算proccess是否有与行的hundreed多个similliar colomn的?

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

对不起,我的英语不好

感谢您的关注。

+4

这就是为什么你应该学习SQL JOINs –

+0

“我只是学习PHP”是的。现在该开始学习(My)SQL了。 – Strawberry

+0

是的,如果没有存储空间,你不会得到太多的东西。而MySQL就像它变得简单一样。 – akronymn

回答

2

一个连接绝对是这里的路。

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

好吧,学习JOIN并不容易,现在没时间了,但我会后去学习它。

至于现在,我只是得到了主意,只使用ARRAY代替 所以之前我画主表,我给你的支持表(表二)为关联数组

$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']]; 
    }