Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2014, 14:16   #1
saylar_06
Пользователь
 
Регистрация: 01.12.2009
Сообщений: 46
По умолчанию Создать двойной запрос

Имеются две таблицы:
1) art_catalog
2) art_products

1)
catalog_id
catalog_name
parent_id
catalog_pic

2)
product_id
product_name
product_pic
catalog_id
product_visible
product_hits
product_new
product_sale
product_price
product_count
product_available
product_img
product_code
product_param1
product_param2
product_param3
product_param4
product_anons
product_description

Необходимо сделать запрос что бы на выходе получить:

catalog_id - catalog_name - parent_id - catalog_pic - product_pic

т.е product_pic последнего товара из категории с parent_id

получается что catalog_id номер родительской категории в которой товаров по сути нет, в ней есть лишь дочерние категории с номером parent_id

пробую запрос типа:

SELECT catalog_id, catalog_name, parent_id, catalog_pic FROM art_catalog

(SELECT product_pic FROM art_products WHERE catalog_id IN (SELECT catalog_id FROM art_catalog WHERE parent_id = '1') AND product_visible = '1' ORDER BY product_id DESC LIMIT 1)

собственно как получить желаемый результат?

P.S Благодарю за внимание!
saylar_06 вне форума Ответить с цитированием
Старый 01.09.2014, 15:00   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Проверяйте... Может где и ошибся
Код:
SELECT catalog_id, catalog_name, parent_id, catalog_pic, art_products.product_pic 
	FROM art_catalog, art_products WHERE art_catalog.catalog_id = art_products.catalog_id;
Может это не соответствует вашему заданию...
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 01.09.2014 в 15:10.
Bugrimov вне форума Ответить с цитированием
Старый 01.09.2014, 20:24   #3
saylar_06
Пользователь
 
Регистрация: 01.12.2009
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Bugrimov Посмотреть сообщение
Проверяйте... Может где и ошибся
Код:
SELECT catalog_id, catalog_name, parent_id, catalog_pic, art_products.product_pic 
	FROM art_catalog, art_products WHERE art_catalog.catalog_id = art_products.catalog_id;
Может это не соответствует вашему заданию...
Спасибо что вы откликнулись на мою прозьбу о помощи!

В общем результатом выполнения Вашего запроса я получаю не совсем то что мне нужно, а именно...

В общем так, дополнение к предыдущему посту...

имеется таблица art_catalog:

catalog_id <---------> catalog_name <---------> parent_id <---------> catalog_pic

1 <---------------------> Искусство <--------------> 0 <-----------> pic1231.jpg

2 <---------------------> Графика <----------------> 1 <------------> pic3423.jpg

3 <---------------------> живопись <---------------> 1 <------------> pic2324.jpg

4 <---------------------> сувениры <---------------> 0 <----------> pic45645.jpg

5 <---------------------> игрушки <----------------> 4 <------------> pic89789.jpg

6 <---------------------> керамика <---------------> 4 <----------> pic2342342.jpg

так же таблица art_products

product_id <---------> product_name <---------> product_pic <---------> catalog_id <---------> product_visible

1 <------------------------> картина 1 <---------> kartina_pic1.jpg <---------> 2 <------------------------> 1

2 <------------------------> картина 2 <---------> kartina_pic2.jpg <---------> 2 <------------------------> 1

3 <------------------------> ижображение <---------> kartina1.jpg <---------> 3<------------------------>1

4 <------------------------> изобра <---------> kartina22.jpg <----------------> 3<------------------------>1

5 <------------------------> игрушка1 <---------> toy1.jpg <-----------------> 5<------------------------>1

6 <------------------------> игрушка2 <---------> toy2.jpg <----------------> 5 <------------------------>1

7 <------------------------> ваза1 <---------> vaza1.jpg <------------------> 6<------------------------>1

8 <------------------------> ваза2 <---------> vaza2.jpg <-----------------> 6<------------------------>1

9 <------------------------> ваза3<---------> vaza3.jpg<------------------------>6<------------------------>0

на выходе хотелось бы получить такую таблицу:

catalog_id<---------> catalog_name<---------> parent_id<---------> catalog_pic<---------> product_pic

1 <---------------------> Искусство <--------------> 0 <---------> pic1231.jpg <--------------> kartina_pic2.jpg

4 <---------------------> сувениры <-------------> 0 <-----------> pic45645.jpg <---------------> aza2.jpg

т.е получить только родителей, и картинку последнего товара доваленного в его подкатегорию(не во все, а просто последний товар добавленный в любую из подкатегорий) при этом product_visible у товара должен быть 1

Спасибо Вам за Вашу помощь!
saylar_06 вне форума Ответить с цитированием
Старый 02.09.2014, 09:10   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

хотим: получить последние товары по всем категориям.
Вопрос: как мы можем определить товар последний в данной категории.
Если просто определять по максимальному product_id.
Код:
select max(product_id) as last_id, catalog_id
from art_products 
{здесь можно добавить доп.условия where ... для вычисления последнего}
group by catalog_id
теперь зная нужный товар в каждой категории
Код:
select art_catalog.catalog_id, ... {нужные поля из art_catalog},
       art_product.product_id, ...  {нужные поля из art_product}
from ( -- используем написанный выше запрос как подзапрос для получения списка последних по всем категориям
         select min(prodict_id) as last_id, catalog_id  --у нас ТОЛЬКО идентификаторы категорий и последнего товара в ней
         from art_products
         group by catalog_id 
       ) as lastproduct --список ИДЕНТИФИКАТОРОВ последних товаров по всем категориям
inner join art_catalog on art_catalog.catalog_id = lastproduct.catalog_id --дополняем данными о категории
inner join art_product on art_product.product_id = lastproduct.last_id  -- дополняем данными о товаре (последнем)
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 02.09.2014 в 09:19.
evg_m на форуме Ответить с цитированием
Старый 02.09.2014, 15:49   #5
saylar_06
Пользователь
 
Регистрация: 01.12.2009
Сообщений: 46
По умолчанию

Спасибо большое!

Подскажите, вот такой вот запрос:

Код:
SELECT art_catalog.catalog_id, art_products.product_pic
FROM (

SELECT MIN( product_id ) AS last_id, catalog_id
FROM art_products
GROUP BY catalog_id
) AS lastproduct
INNER JOIN art_catalog ON art_catalog.catalog_id = lastproduct.catalog_id
INNER JOIN art_products ON art_products.product_id = lastproduct.last_id
вернул мне категории лишь те где есть записи, а если у меня есть категория но в ней нет товара?

как в этом случае получить категорию с товаром NULL?
saylar_06 вне форума Ответить с цитированием
Старый 02.09.2014, 16:57   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
вернул мне категории лишь те где есть записи, а если у меня есть категория но в ней нет товара?
Вар 1.
Код:
..........
right join art_catalog  .........
Вар 2.
Код:
select ...
from art_Catalog --НАЧИНАЕМ с таблицы art_Catalog 
left join  -- ЕСЛИ есть присоединяем иначе добавляем пустую
            ( --последние
          ) as lastproduct on art_catalog.catalog_id =lastproduct.catalog_id
left join art_product ....
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу создать запрос!!! Abay19941308 PHP 8 13.11.2012 19:19
Создать запрос Самоучка SQL, базы данных 9 08.02.2012 16:14
Создать запрос KaDetka Microsoft Office Access 3 09.06.2011 13:48
MySQL запрос создать 5.1 iankov SQL, базы данных 2 23.07.2009 20:06
Создать запрос mysql iankov SQL, базы данных 4 17.01.2009 15:36