|
|
23.06.2011, 13:39
|
|
Мария
FreshLab
Зарегистрирован: 2010-08-03
Сообщений: 21
|
доброго времени суток.
есть компоненты: Новости (поля Name, Date) и Проекты (поля TitleName, Date).
Новости упорядочены по дате.
Задача: в список новостей впихнуть проекты так, чтобы они вписывались в общую сортировку по дате.
пример:
есть Новость 1 - 01.05.2011, Новость 2 - 05.05.2011, Новость 3 - 10.05.2011
есть Проект 1 - 02.05.2012, Проект 2 - 04.05.2012, Проект 3 - 09.05.2012.
нужно:
Новость 3 - 10.05.2011
Проект 3 - 09.05.2012
Новость 2 - 05.05.2011
Проект 2 - 04.05.2012
Проект 1 - 02.05.2012
Новость 1 - 01.05.2011
p.s. ну само собой чтобы были еще $fullLink
ifreshlab
|
|
|
23.06.2011, 15:22
|
|
Asiat
Аниматика
Зарегистрирован: 2005-12-12
Сообщений: 576
|
Используйте $query_select, $result_vars и иже с ними, сделайте запрос к двум таблицам.
|
|
|
23.06.2011, 15:26
|
|
DiGGy
DiGGy
Зарегистрирован: 2005-04-04
Сообщений: 1546
|
Создаете компонент "Новости+Проекты".
Вариант 1 (будут доступны все штатные переменные компонента)
В системных настройках компонента пишите: $ignore_all = true; - тем самым отключается формирование штатного sql-запроса.
Далее уже ручками формируете нужный запрос через соотв-ие переменные $select_vars, $query_from и т.п.
В самом sql-запросе объединяете 2 таблицы в одну путем использования union
Вариант 2 (делаете всё сами)
В префиксе вывода объекта формируете свой sql запрос, либо через listQuery(), либо через $db->get_results() и выводите все сами.
В самом sql-запросе объединяете 2 таблицы в одну путем использования
зы. А ваще нефиг огород городить, набор полей везде одинаковый и смысловая составляющая схожая, решайте задачу с использованием только 1 компонента - гемороя на порядок меньше
Temet nosce...
|
|
|
23.06.2011, 20:57
|
|
Pix Play
Pix Play
Зарегистрирован: 2011-04-11
Сообщений: 70
|
Цитата:
зы. А ваще нефиг огород городить, набор полей везде одинаковый и смысловая составляющая схожая, решайте задачу с использованием только 1 компонента - гемороя на порядок меньше
поддерживаю!)))
сделайте поле в компоненте - логика
и ставьте галочку при редактировании если эта новость относиться к проектам
или сделйте 2 галочки - новость и проекты
а вывод соответственно по страницам с условием нужной галочки, ну а где всё нужно - соответственно без учёта.
laboratory of ideas
|
|
|
24.06.2011, 12:35
|
|
Гость
Гость
|
Цитата:зы. А ваще нефиг огород городить, набор полей везде одинаковый и смысловая составляющая схожая, решайте задачу с использованием только 1 компонента - гемороя на порядок меньше
огород городится так как это разные сущности и должна быть осуществлена их независимость. дабы потом можно было независимо их изменять не скрещивая пальцы.
по поводу Union: можно какой-нибудь пример?
|
|
|
24.06.2011, 12:36
|
|
Мария
FreshLab
Зарегистрирован: 2010-08-03
Сообщений: 21
|
запись Гостя моя )))
ifreshlab
|
|
|
24.06.2011, 14:38
|
|
DiGGy
DiGGy
Зарегистрирован: 2005-04-04
Сообщений: 1546
|
на это мануал по sql есть, но для примера как-то так:
Код:select Name, Date from Message1
union
select TitleName, Date from Message2
order by 2 desc
Temet nosce...
|
|
|
26.06.2011, 08:52
|
|
Мария
FreshLab
Зарегистрирован: 2010-08-03
Сообщений: 21
|
имелось ввиду, пример на неткате.
ifreshlab
|
|
|
26.06.2011, 16:49
|
|
Мария
FreshLab
Зарегистрирован: 2010-08-03
Сообщений: 21
|
разобрались
Код:$ignore_all = TRUE;
$result_vars = '$Name, $Anons';
$query_select = "a.Name AS Name, a.Date AS Date";
$query_from = "(`Message100` AS a )";
$query_join = " UNION SELECT b.Name AS Name, b.Date AS Date FROM Message101 AS b ";
$query_order = "Date DESC";
$query_limit = 20;
ifreshlab
|