Из параметра с одной таблици, вывести название из другой таблици

DenVeroid

Новичок
Из параметра с одной таблици, вывести название из другой таблици

Извиняюсь если что тему неправельно озаглавил

Имеется две таблици "news", "user"

В таблице новостей присутсвуют такие столбци

id - айди номер новости
text - текст новости
user - автор новости

В общем виде новостная таблица выглядит так

+----+--------+-----+
| id | text | user|
+----+--------+-----+
| 1 | текст1 | 5 |
| 2 | текст2 | 8 |
| 3 | текст3 | 2 |
+----+--------+-----+

и столбци для таблици user

id - айди номер автора
name - имя автора


В общем виде авторская таблица выглядит так

+----+-------+
| id | name |
+----+-------+
| 2 | Петя |
| 5 | Костя |
| 8 | Женя |
+----+-------+


Мне нужно при выводе новостей, для каждой новости вывести имя автора не айди номер который
храниться в столбце у новостной таблице, как сделать так чтобы было меньше запросов

Сейчас я делаю таким образом

PHP:
function user($user_id){
 $sql_user=mysql_query('SELECT * FROM user WHERE id="'.$row['id'].'"');
 while($row=mysql_fetch_array($sql_user)){
   return $row['name'];
 }
}


 $sql_news=mysql_query('SELECT * FROM news');
 while($row=mysql_fetch_array($sql_news)){
  echo  $user = user($row['id']);
 }

Делаю отдельную функцию user($user_id) через которую я получаю имя автора.
Как я понимаю это не лутьший вариант, т.к для каждой записи(каждой новости) делается ещё
один запрос, на вывод имени автора, а что если будет 200 новостей, выходит что будет все
201 запроса, как сделать так чтобы было меньше запросов?
 

MajestiC

Пых
PHP:
select news.*,user.name from news left join user on (news.user=user.id)
Кстати, я так и не понял твой код =) Где у тебя в функции user используется передаваемый параметр $user_id?
 

DenVeroid

Новичок
SunDrop, я их ни разу не использовал, а так видел где-то, за ссылку спасибо, сейчас почитаю

MajestiC, спасибо что подметил, отпечатался
должно быть так
PHP:
$sql_user=mysql_query('SELECT * FROM user WHERE id="'.$user_id.'"');
твой код сейчас постораюсь проверить, но он вообще как по производительности, БД сильно не нагружает?
 

kabachok

Новичок
я еще не очень опытен, но вторую таблицу помоему можно прочитать в массив

-~{}~ 03.02.06 21:08:

не знаю на сколько это разумно, но как вариант
 

GoaMind

Новичок
Что-то типа этого можно
[sql]SELECT n.*, u.name FROM tbl_news n
LEFT JOIN tbl_users u ON u.id = n.user[/sql]
 

DenVeroid

Новичок
Вот ещё, первый вроде как мне посоветавали самый лутьший

PHP:
SELECT text, name FROM news INNER JOIN users ON news.user = users.user 
SELECT news.text,user.name FROM news,user where news.user=user.id
 
Сверху