2016-11-28 3 views
0

я только учусь PHP, и у меня есть вопрос Пусть просто сказать, у меня есть MySQL таблицы "A"Наиболее эффективный способ MySQL Query в запросе

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» каждый из них отображает имена заданий из таблицы «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 если существует множественный similliar колонные с hundreed строк?

Есть ли более эффективный способ сделать это?

Извините за мой плохой английский

Благодарим Вас за внимание.

+4

Вот почему вы должны узнать о SQL JOINs –

+0

«Я просто изучаю PHP» Да. Пришло время начать изучение (My) SQL тоже. – Strawberry

+0

Да, вы не уйдете с PHP без хранения. И MySQL примерно так же прост, как и получается. – akronymn

ответ

2

Присоединение - это, безусловно, путь сюда.

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

Ну, нелегко узнать о ПРИСОЕДИНЕНИИ, сейчас нет времени, но я узнаю его последним.

Как сейчас, я просто получить идею просто использовать 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']]; 
    }