|
|
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(), просто я когда писал ф-ю выборки, то мне пришлось создавать массив с айдишками шаблонов, которые не являются товарами и проверять добавлять ли их в запрос или нет? Спасибо.
Неткат - это просто!!!
|