Регистрация
Вход через соцсети
Восстановление пароля

Выборка из двух компонент

Новый топик
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
Аниматика
Asiat

Зарегистрирован:
2005-12-12
Сообщений: 567

Используйте $query_select, $result_vars и иже с ними, сделайте запрос к двум таблицам.

Разработка сайтов на Netcat с 2006... хм-м ... или 2005 хммм года. В общем, обращайтесь.
23.06.2011, 15:26
Ответить | Цитировать
DiGGy
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
Сообщений: 62

Цитата:

зы. А ваще нефиг огород городить, набор полей везде одинаковый и смысловая составляющая схожая, решайте задачу с использованием только 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
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
198 196 2011-06-26 16:49:31 11389
Описание проекта