2016-11-28 85 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']]; 
    }