Странно работает запрос из двух таблиц

Leonid

PHP? нет, не слышал...
Странно работает запрос из двух таблиц

Сижу и ничего не понимаю...
Есть 2 таблицы -
1. articles (Статьи)
id, title,content,timestamp,istochnik_id (id автора или источника), category_id (id категории - рубрика))

2. newssources (Источники или авторы статей)
id,sourse,link

Если написать запрос для выбора статей по определенной теме за определенное время, то он будет таким:

select * from articles where
category_id = $category_id
and (timestamp>=date_sub('$pdate', interval $interval day)) and timestamp<'$pdate'
order by timestamp desc

здесь $pdate и $interval - дата и интервал в днях. $category_id - номер категории
Данный запрос работает прекрасно и правильно. Необходимо чтобы в выборке были имя и ссылка на источник из таблицы newssources
Изменяем запрос:

select * from articles, newssources where
articles.category_id = $category_id and
articles.istochnik_id = newssources.id
and (articles.timestamp>=date_sub('$pdate', interval $interval day)) and articles.timestamp<'$pdate'
order by articles.timestamp desc

Данный запрос работает, но почему-то не возвращает некоторые записи, которые возвращает первый... Логика выборки не поменялась, добавилась только выборка дополнительных данных из 2 таблицы..
В чем тут может быть дело?
 

Leonid

PHP? нет, не слышал...
Не знаю, не пробовал.
Везде у меня подобные запросы работают нормально, а здесь почему-то глючит....
 

Sfagnum

Новичок
глупо, но может поможет :)
articles.istochnik_id = newssources.id
мб тут несоответсвие какое то...

работал с оставленными в наследство бд не раз на этом парился.
 

Leonid

PHP? нет, не слышал...
Нет, все правильно. У меня эти запросы из двух таблиц в 3 местах и везде одинаково не работает.
Причем такая закономерность: Если запрос

select * from articles, newssources where
articles.category_id = $category_id and
articles.istochnik_id = newssources.id
and (articles.timestamp>=date_sub('$pdate', interval $interval day)) and articles.timestamp<'$pdate'
order by articles.timestamp desc

Не возвращает определенную строку, например с id=123, то и запрос

select * from articles, newssources where
articles.category_id = $category_id and
articles.istochnik_id = newssources.id
and articles.id = 123

ничего не возвращает....
 

SelenIT

IT-лунатик :)
Leonid
Для всех ли статей указаны источники? Похоже, что нет. Если статьи без источников имеют право на жизнь, используй LEFT JOIN, иначе - чини базу...
 

Leonid

PHP? нет, не слышал...
Да, некоторые без источников, это возможно

-~{}~ 05.07.06 08:42:

Точно, проблема в этом. Если istochnik_id = 0, то эта строка и не выводится. Наиболее просто эта проблема решилась добавлением строки с Id=0 в таблицу с источниками... Все равно источник и ссылка проверяются и пустая строка не помешает.
 
Сверху