Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Выборка последних товаров

11.01.2007, 19:41
Sima

Зарегистрирован:
2007-01-11
Сообщений: 21

Всем привет!
Значит задача следующая.
Есть каталог товаров. Надо на главную страницу выбрать 3 товара которые последние добавленные. Вся сложность заключается в том что у товаров разные шаблоны и получается что они все в разных таблицах лежат... помогите как так сделать???
Есть одна идея это самому писать ф-ю которая будет строить запрос с кучей джойнов выбирая все шаблоны товаров по группе Netshop. Может у кого нить есть идеи попроще и по легче ибо я себе представляю время выполнения запроса с 20 и более джойнами грустный((
Огромное спасибо!

Неткат - это просто!!!
15.01.2007, 14:16
Кирилл Хряпин
NetCat

Зарегистрирован:
2006-06-15
Сообщений: 207

Можно создать подобный запрос:

Код:
(SELECT 1 as Class_ID, Message_ID, LastUpdated FROM Message1 ORDER BY LastUpdated DESC LIMIT 3)
UNION
(SELECT 2 as Class_ID, Message_ID, LastUpdated FROM Message2 ORDER BY LastUpdated DESC LIMIT 3)
UNION
(SELECT 3 as Class_ID, Message_ID, LastUpdated FROM Message3 ORDER BY LastUpdated DESC LIMIT 3)
ORDER BY LastUpdated DESC LIMIT 3


Здесь Message1, Message2, Message3 - таблицы, соответствующие шаблонам с товарами (1, 2, 3 - идентификаторы шаблонов); соответственно, Вам нужно откорректировать SELECT, чтобы получать необходимые Вам поля.
15.01.2007, 17:57
Sima

Зарегистрирован:
2007-01-11
Сообщений: 21

Единственное что надо учесть, это то что шаблоны пользователь может добавлять, поэтому сначала надо выбирать список шаблонов фильтруя по группе Netshop.

Спасибо за ответ.

Неткат - это просто!!!
17.01.2007, 17:54
Кирилл Хряпин
NetCat

Зарегистрирован:
2006-06-15
Сообщений: 207

Еще можно воспользоваться методом GuessGoodsTypeIDs() объекта $shop:

Код:
";
$goods_types = $shop->GuessGoodsTypeIDs();
$num_goods = 4;
$qry = array();

foreach ($goods_types as $goods_type) {
$qry[] = "(SELECT $goods_type as Class_ID, Message_ID, Name
FROM Message$goods_type
ORDER BY LastUpdated DESC LIMIT $num_goods)";
}

$qry = join("nUNIONn", $qry) . "nORDER BY LastUpdated DESC LIMIT $num_goods";

echo listQuery($qry, '<a href='".nc_message_link($data[Message_ID], $data[Class_ID])."'>$data[Name]</a><br>');

echo "
17.01.2007, 18:55
Sima

Зарегистрирован:
2007-01-11
Сообщений: 21

Интересный коментарий. Спасибо.
Подскажите только, а что именно делает метод GuessGoodsTypeIDs(), просто я когда писал ф-ю выборки, то мне пришлось создавать массив с айдишками шаблонов, которые не являются товарами и проверять добавлять ли их в запрос или нет? Спасибо.

Неткат - это просто!!!
198 196 2007-01-17 18:55:40 8847
Описание проекта