Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день!
Подскажите, пожалуйста, верное решение, а то умаялся совсем...
Есть 3 таблицы:
events (id, type, title, add_time)
news(news_id, title, add_time)
user(user_id, nickname, add_time)
Необходимо выбрать следующие поля:
events(type, title, add_time);
news(news_id);
user(user_id);
и отсортировать записи по events.add_time в порядке убывания...
Делаю запрос:
$sql = mysql_query("SELECT events.type, events.title, events.add_time, news.news_id, user.user_id FROM `events`, `news`, `user` WHERE events.add_time = news.add_time AND events.add_time = user.add_time ORDER BY events.add_time DESC");
Запрос не работает, данные не извлекаются через:
while( $row = mysql_fetch_array($sql) )
{
//
}
Никакой ошибки не пишет. И mysql_num_rows($sql) показывает 0...
Если запрашивать лишь с двух таблиц:
$sql = mysql_query("SELECT events.type, events.title, events.add_time, news.news_id FROM `events`, `news` WHERE events.add_time = news.add_time ORDER BY events.add_time DESC");
То указанные в SELECT'е поля успешно извлекаются. Думаю, это из-за второго условия WHERE получается такой затор. Но не уверен...
Подскажите, как сделать правильный запрос? Заранее огромное за помощь!
Отредактированно Aldo (29.11.2010 14:05:17)
Неактивен
В user нет поля add_time, а ошибки надо выводить, тогда из будет видно
Неактивен
paulus написал:
В user нет поля add_time, а ошибки надо выводить, тогда из будет видно
Прошу прощения, это я ошибся. Поля таблички "user" подкорректировал в первом сообщении:
user(user_id, nickname, add_time)
Проблема с выводом остается прежней.
После запроса поставил:
echo mysql_error();
Ничего не показывает...
Неактивен
Значит у вас нет данных удовлетворяющих условию events.add_time = user.add_time Закономерно, что результат запроса пустой.
Неактивен
vasya написал:
Значит у вас нет данных удовлетворяющих условию events.add_time = user.add_time Закономерно, что результат запроса пустой.
Вот у меня данные в трех таблицах:
Табличка "news":
id: 1
title: Пролетая над гнездом кукушки
add_time: 1290908672
id: 2
title: Большой сон
add_time: 1290908699
--------
Табличка "user":
user_id: 1
nickname: Alex
add_time: 1291036778
--------
Табличка "events" (в нее заношу произведенные ранее действия). После того, как, к примеру, внесена новость в табличку "news", тут же заносится отчет в таблицу "events". То же самое с зарегистрированным пользователем):
id: 1
type: 2
title: Пролетая над гнездом кукушки
add_time: 1290908672
id: 2
type: 2
title: Большой сон
add_time: 1290908699
id: 3
type: 1
title: Alex
add_time: 1291036778
Потом планирую выводить зашедшему на сайт пользователю отчет о произошедших на сайте событиях с таблички "events"...
И вот если в запросе извлекаю данные с "events" и "news" - то все работает нормально. А вот если добавляю в запрос третью таблицу "user" - то ни в какую... ((
Отредактированно Aldo (29.11.2010 14:34:45)
Неактивен
Ага, понятно.
Вы пытаетесь выбрать такую запись из таблицы events, у которой дата имеет соответствие и в таблице news и в таблице user. А такой естественно нет.
Вам нужно использовать left join:
FROM `events` LEFT JOIN `news`ON events.add_time = news.add_time LEFT JOIN `user` ON events.add_time = user.add_time
Неактивен
vasya написал:
Ага, понятно.
Вы пытаетесь выбрать такую запись из таблицы events, у которой дата имеет соответствие и в таблице news и в таблице user. А такой естественно нет.
Вам нужно использовать left join:
FROM `events` LEFT JOIN `news`ON events.add_time = news.add_time LEFT JOIN `user` ON events.add_time = user.add_time
Огромнейшее Вам спасибо!!! Теперь все выводится так, как я и хотел!
PS. Форум добавляю в закладки! Остался доволен оперативной помощью! Еще раз, спасибо!
Неактивен