limit в select + join

Avdoshyn

Новичок
limit в select + join

Добрый день!

ситуация следующая - есть таблица с новостями
ну скажем news_2002 и соответственно в новом году она news_2003.
Так вот такая ситуация - скажем мне надо сделать ленту из 20 новостей - но в таблице news_2003 еще нет столько новостей - как быть?

в идеале запрос должен быть

select * from news_2002,news_2003 order by Date DESC limit 20

но выдает Column: 'Date' in order clause is ambiguous

никакой вид join не помогает.

Что подскажете?

Заранее спасибо
 

Demiurg

Guest
а зачем ты разбил на 2 таблицы ?
Теперь тебе нужен union, который есть помоему только в 4ом mysql, или руками объеденяй.
 

Апельсин

Оранжевое создание
тебе нужен не JOIN, а UNION (он только с 4.0 версии поддерживается)
а то что ты написал - это полное декартово произведение.
 

Vinny

Guest
1. Хранить в 2-х таблицах - изврат.
2. Выбери с news_2003 limit 20, посчитай сколько получил записей (допусим их будет count), потом выбери из news_2002 limit (20-count)

Задачка для первого класса...
 

Avdoshyn

Новичок
Ну зачем разбил на 2 таблицы - вопрос не в тему - ответов может быть много - для удобства скажем так.

А что такое руками объединяй?


Автор оригинала: Demiurg
а зачем ты разбил на 2 таблицы ?
Теперь тебе нужен union, который есть помоему только в 4ом mysql, или руками объеденяй.
 

Vinny

Guest
Никогда не поверю, что 2 таблицы - удобнее. Нет таких задач, чтобы пришлось нарушать принцыпы проектирования БД...
 

Avdoshyn

Новичок
Да спасибо - до этого я додумался в первую минуту поставленной задачи - но интересно красивое решение - я хотел попробовать сделать это одним запросом может быть с помощью join но пока не получается, а кроме того например если мне надо выбрать из двух таблиц значения где count максимален,то мне поочередно в цикле все таблицы проходить а потом сортировать полученный массив? ужасно


Автор оригинала: Vinny
1. Хранить в 2-х таблицах - изврат.
2. Выбери с news_2003 limit 20, посчитай сколько получил записей (допусим их будет count), потом выбери из news_2002 limit (20-count)

Задачка для первого класса...
 

Vinny

Guest
В одну таблицу и проблем не будет. Хочется проще, получай изврат...
 

Avdoshyn

Новичок
Понятно - простота друг гениальности - хотел бы я посмотреть скажем korrespondent.net в одной таблицей новостей


Автор оригинала: Vinny
В одну таблицу и проблем не будет. Хочется проще, получай изврат...
 

Demiurg

Guest
>Ну зачем разбил на 2 таблицы - вопрос не в тему - ответов может быть много - для удобства скажем так.
вопрос как раз в тему. Хочешь нормальное решение - делай по нормальному, удобства тут как раз минимальные.
>А что такое руками объединяй?
выбираешь сначала из одной таблицы, потом из другой.
 

Vinny

Guest
Я на korrespondent.net не бывал и не буду... Не вижу никаких препятствий хранить сущности одного типа в одной таблице... Просто, имхо, у кого-то руки /dev/null
 

Demiurg

Guest
>хотел бы я посмотреть скажем korrespondent.net в одной таблицей новостей
предположим у тебя супер-пупер-новостной сайт, в нем по 100 новостей каждый день. получаем 365000 записей за 10 лет. Ты думаешь для бд - это объемы ?
 

Avdoshyn

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


Автор оригинала: Demiurg
>хотел бы я посмотреть скажем korrespondent.net в одной таблицей новостей
предположим у тебя супер-пупер-новостной сайт, в нем по 100 новостей каждый день. получаем 365000 записей за 10 лет. Ты думаешь для бд - это объемы ?
 

RomikChef

Guest
я хочу ездить на квадратных колесах. Хорошо,у меня руки кривые - тогда вы люди я прямыми руками помогите решить проблему при существующих условиях либо докажите что ее невозможно решить - я ведь именно это просил - а не советы по форме моих колес, хотя за них тоже спасибо

Авдошин, ты знаешь, чем отличается ламер от чайника? Тем, что когда чайнику говорят, как правильно сделать, он говорит "спасибо" и идет делать. А ламер начинает вставать в позу и заявлять, что его решение самое гениальное, и если кто не может постичь всю его глубину, то пусть молчит и не высовывается.

Не советую. Съедят.

А советую перечитать тему. Там написано уже, что при существующих условиях задачу решить нельзя.
 

Avdoshyn

Новичок
ok, понял, спасибо


Автор оригинала: RomikChef
я хочу ездить на квадратных колесах. Хорошо,у меня руки кривые - тогда вы люди я прямыми руками помогите решить проблему при существующих условиях либо докажите что ее невозможно решить - я ведь именно это просил - а не советы по форме моих колес, хотя за них тоже спасибо

Авдошин, ты знаешь, чем отличается ламер от чайника? Тем, что когда чайнику говорят, как правильно сделать, он говорит "спасибо" и идет делать. А ламер начинает вставать в позу и заявлять, что его решение самое гениальное, и если кто не может постичь всю его глубину, то пусть молчит и не высовывается.

Не советую. Съедят.

А советую перечитать тему. Там написано уже, что при существующих условиях задачу решить нельзя.
 

chira

Новичок
В качестве времменого решения, можешь попробовать следующий алгоритм:
Код:
$news_per_page = 20;
$tab_year = 2003;
$selected_news = 0;
while $selected_news < $news_per_page {
  $q = 'select ..... from news_'.$tab_year.' where ...  ORDER BY ... LIMIT '.$news_per_page-$selected_news;

  $res = mysql_query($q);
  $selected_news += mysql_num_rows($res);

//...........  вывод новостей

  $tab_year -= 1;
}
всякие проверки на существование таблицы и т.д и т.п. я опустил.
 
Сверху