Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Help  [new]
poluno4nic
Member

Откуда:
Сообщений: 2
Доброго времени суток.

Начинаю писать запросы в Oracle SQL Developer.

Нужно найти товары одного наименования и одной серии в зоне ячеек.

Есть три столбика номер_товара, номер_серии из таблицы "Товары", номер_ячейки из таблицы "Ячейки".

Прошу помочь с написанием данного запроса. Максимум чего смог добиться:

Select tt.номер_товара,tt.номер_серии,tt.номер_ячейки
from
(select t.номер_товара, t.номер_ячейки, t.номер_серии
from
(Select loads.номер_товара,loads.real_loc_id, loads.номер_серии, count(loads.номер_товара)
from
location, loads
where
loads.номер_ячейки > 0
and loads.holder_id = 15283 and (выборка владельца)
loads.is_container = 'f' (запрет на контейнеры)
and loads.номер_ячейки = location.id (условия объединения)
and location.name like '1-%'
group by loads.номер_товара,loads.номер_ячейки, loads.номер_серии) t) tt
group by номер_ячейки, tt.номер_серии, tt.номер_товара
having count(*)>= 1
order by номер_товара
14 сен 15, 14:25    [18146820]     Ответить | Цитировать Сообщить модератору
 Re: Help  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1639
1. Тег SRC PLSQL.
2. Пример тестовых данных, запускаемых в любой БД.

+
with t as 
 (
       select 1 id_ware, 'Товар1' name_ware, 1 id_series, 90001 cell from dual union all
       select 2 id_ware, 'Товар2' name_ware, 1 id_series, 90002 cell from dual union all
       select 101 id_ware, 'Товар101' name_ware, 2 id_series, 90003 cell from dual union all
       select 102 id_ware, 'Товар102' name_ware, 2 id_series, 90004 cell from dual union all
       select 103 id_ware, 'Товар103' name_ware, 2 id_series, 90005 cell from dual
 )
select name_ware, id_series, count(cell) from t
group by name_ware, id_series
пример


автор
товары одного наименования и одной серии в зоне ячеек.


Непонятно ТЗ, описывайте подробнее.
14 сен 15, 15:19    [18147122]     Ответить | Цитировать Сообщить модератору
 Re: Help  [new]
poluno4nic
Member

Откуда:
Сообщений: 2
dmdmdm,
Есть две таблицы loads (таблица с данными о товарах), location ( таблица с параметрами ячеек) , В таблице loads есть данные о номере товара и номере серии товара, в таблице location есть данные о номере ячеек. Нужно выяснить какой товар с одинаковым номером и серией лежит в каких ячейках.
14 сен 15, 15:40    [18147253]     Ответить | Цитировать Сообщить модератору
 Re: Help  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1639
poluno4nic
Есть две таблицы loads (таблица с данными о товарах), location ( таблица с параметрами ячеек) , В таблице loads есть данные о номере товара и номере серии товара, в таблице location есть данные о номере ячеек.


Пожелание "Пример тестовых данных, запускаемых в любой БД" оставлено без внимания.
Если вы думаете, что по приведенному вами тексту кто-то будет писать "create table", "insert..." - это наивно.
Да, такие люди найдутся. Но если будет пример данных, помощь придет в 10 раз быстрее.

poluno4nic
Нужно выяснить какой товар с одинаковым номером и серией лежит в каких ячейках.



Видимо, вы студент, или молодой специалист. Развивайте навыки четкой постановки задачи.
По приведенному тексту, учитывая

having count(*)>= 1


выше, могу предположить такое уточнение.

Нужно выяснить, какие товары с одинаковым номером и серией лежат более чем в одной ячейке, и вывести всю информацию об этих товарах.
На моем примере одно из решений таково:

with t as 
 (
       select 1 id_ware, 'Товар1' name_ware, 1 id_series, 90001 cell from dual union all
       select 2 id_ware, 'Товар2' name_ware, 1 id_series, 90002 cell from dual union all
       select 101 id_ware, 'Товар101' name_ware, 2 id_series, 90003 cell from dual union all
       select 101 id_ware, 'Товар101' name_ware, 2 id_series, 90007 cell from dual union all
       select 102 id_ware, 'Товар102' name_ware, 2 id_series, 90004 cell from dual union all
       select 103 id_ware, 'Товар103' name_ware, 2 id_series, 90005 cell from dual
 )
select id_ware, name_ware, id_series, cell from 
(
  select id_ware, name_ware, id_series, cell, count(cell) over (partition by id_ware, id_series) cnt
    from t
)
 where cnt > 1
14 сен 15, 18:49    [18148152]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить