У меня есть цикл while, который выводит список классов. В базе данных классов имя учителя определяется идентификатором учителей в базе данных пользователей.
Вот моя структура базы данных.
Classes Database ----------------------------- ID CLASS TEACHER 1 product design 3 User Database ----------------------------- ID NAME 3 John Doe
Поэтому, когда я перечисляю свои классы, мне нужно его преобразовать «3» в «John Doe».
Это мой текущий код:
<?php $classdetails = mysql_query("SELECT * FROM class"); while($class = mysql_fetch_array($classdetails)) { $marklist_class = $class['class']; $marklist_teacher = $class['teacher']; //This is a userid //------Somewhere here i need to get the userid and look it up in the user database if($marklist_class=="") { } else { echo $marklist_class . ' ' . $marklist_teacher;} } } ?>
Я понимаю, что просто добавление другого mysql-запроса приведет к снижению производительности и не рекомендуется, так как бы я искал пользовательскую базу данных для каждой строки без добавления запроса в цикл while.
Спасибо.
Вы можете использовать запрос соединения, чтобы получить всю необходимую вам информацию сразу. Затем в вашем приложении вы можете отсортировать его и отобразить соответственно. например
SELECT Classes.class, Users.Name FROM Classes JOIN Users on Classes.Teacher = Users.ID
Вы хотите использовать JOIN в mysql.
SELECT * FROM class c JOIN user u ON u.ID = c.TEACHER
Вы можете использовать JOIN в своем первоначальном запросе.
Select c.id, c.class, c.teacher, u.name from class c join user u on u.id = c.teacher
это вернет все столбцы из класса, а также столбец совпадающих имен преподавателей от пользователя, все в одном запросе.