Вывод из двух таблиц

Sergo_Sev

Творец
Регистрация
14 Июн 2008
Сообщения
578
Реакции
193
Есть вот такой код
PHP:
$sql = 'SELECT * FROM files';
$res = $db->query($sql);
$users = array();
while ($row = $db->get_array($res)) {
	$users[] = $row;
}

echo = $row['name'];
echo = $row['news_id'];

И две таблицы БД
*files
id
name
news_id

*news
id
title


Нужно вместо "news_id" вывести название "title" из другой таблицы, которому соответствует news_id

Вначале хотел сделать таким образом
SELECT * FROM files, news

но ничего нужного не вышло
 
PHP:
SELECT * FROM files
   INNER JOIN news ON files.news_id = news.id
 
Как вариант через запятую перечислить таблицы и через where склеить.
 
Если не ошибаюсь, то в случае с
SELECT * FROM files INNER JOIN news ON files.news_id = news.id
выдаст только те строки из *files для которых есть запись в *news
Соответственно, если у Вас есть строки в *files, для которых отсутствует запись в *news, то такие строки будут опущены.
Если необходимо получить все строки из *files, не зависимо от того, есть для них запись в *news или нет, то лучше использовать следующее:
Код:
SELECT * FROM `files`
LEFT JOIN `news` ON `files`.`news_id` = `news`.`id`
 
Тут, если по простому, есть 2 варианта - правильный и не совсем правильный(вернее совсем не правильный,но тоже рабочий:()
1. Через объединение таблиц, как написал fly21.
2. Посылать к базе 2 запроса, а затем формировать массив из 2х результатов в один средствами пхп.
 
Никогда не делайте 2 запроса к базе, если можно все реализовать одним запросом. Даже если что кажется нельзя, все равно пробуйте делать один запрос. Со временем получится. Или спрашивайте, обязательно кто-то поможет..
 
Никогда не делайте 2 запроса к базе,
Иногда делайте 2 запроса, вместо одного, т.к. 2 отдельных запроса в высоконагруженных проектах будут давать меньшую нагрузку на БД, чем один объединенный. Если не прав, то подправьте.
 
Назад
Сверху