Задача по SQL
как эти две таблицы связаны друг с другом и вообще зачем нам нужна вторая таблица?
что такое порядковый номер? это id из первой таблицы или просто нумерация от балды?
что такое инвентарный элемент? какое конкретно это поле в какой из таблиц?
что такое оператор? имеется ввиду сделать одним запросом без вложений?
Или просто требуется произвольно раскидать элементы по сотрудникам? Смысл то ж не понятен - можно отдать все одному.
Инвентарный элемент например: сканер, монитор, сис. блок и т.д.
оператор да это один запрос со всякими join, селектами и т.д.
ЗЫ, Сказали задача сложная.
порядковый номер, инвентарный элемент, пустое поле. НО количество, строчек с инвентарным элементом должно быть равно VAL.может тебе такое надо?
есть таблица
id, name, val
нужно выбрать каждую строчку val раз
это вроде не простая задачка, говори какая у тебя субд, я ток на оракле знаю как такое делать
вся херня в том чтобы сделать кол-во сток одного наименования равное VAL,
односторонним соответствиемблин
что это такое?
нет такого понятия "односторонне соответствие"
есть понятия: такое-то поле в первой таблице соотв. такому-то полю во второй
на половину моих вопросов не ответил
инвертарный элемент - это name в первой таблице или это вообще третья таблица?
таблице связаны только логически, как я написал в первом посте.
да инвентарный элемент это name в первой таблице.
В предудущем посте ты правильно понял задачу, но нужно сделать средсвами SQL
нужно сделать средсвами SQLнет такого понятия "средства sql"
дело в том, что у каждой базы данных свой диалект sql
в оракле например есть connect by и model
с их помощью эта задачка элементарно решается
create table inv (id number, name varchar2(10 val number);
insert into inv values(1,'scanner',5);
insert into inv values(2,'display',3);
WITH nums as
( select rownum num
from ( select 1 num
from dual
group
by cube (1,2,3)
)
)
select inv.*
from inv, nums
where inv.val >= nums.num
order by id
1|scanner|5
1|scanner|5
1|scanner|5
1|scanner|5
1|scanner|5
2|display|3
2|display|3
2|display|3
show numtbl
x
-
1
2
..
10000
select id,name, hz_chto_dlya pustogo_mesta from tbl1,numtbl where tbl1.vol>=numtbl.x
Что-то типа этого. Не могу проверить точно.
В нормальной базе можно проще:
ungroup select empty:(first vol)#` by id,name from tbl1
УСЛОВИЕ: 1 инвентраный элемент может относиться только к одному сотруднику, на одном сотруднике может висеть несколько элеметов.все пытаюсь понять эту фразу
если понимать под инвентарным элементом - единицу инвертарного наименования
то получается что запись val=10 означает наличие 10 сотрудников
то есть получается что в таблице сотрудников всегда есть достаточное чсло записей каким бы ни был val
т.е. select max(val) from table1 ВСЕГДА МЕНЬШЕ чем select count(*) from table2
на основе этого можно решить задачу так:
select table1.*
from table1, (select rownum r from table2) i
where i.r <= val
order by id
если бы еще получилось от rownum избавиться, то получиться прям чистый sql
В нормальной базеой, что это?
Kdb+ наверное. %)
ой, что это?kdb+
если бы еще получилось от rownum избавиться, то получиться прям чистый sqlполучилось
select table1.*
from table1,
( select
(select count(*) from table2 t2 where t2.id <= t1.id) as r
from table2 t1
order by 1
) i
where i.r <= val
order by id
но это работает при условии что инвентарный элемент - это единица инвентарного наименования
нет ты не понял, инвентарная единица, может записана только на одного челвека, а один человек может владать несколькими инвентарными единицами.
нет ты не понялкакая разница?
лучше скажи
тебе предложили три решения
хоть одно подошло?
Ща буду изучать. А чо меня минусуют-то? не я же это говно придумывал, просто интересно стало.
Ты задачу так сформулировал, что она в говно превратилась.
как мне написали, так и суда написал
если да, то мог бы и сформулировать нормально, а то реально "поди туда не знаю куда"
ну вот вы вопросы дазавали, я пересправшивал, получилось в итоге что-то..
получилось в итоге что-то..Нихера в итоге не получилось.
А если реальный автор вопроса даже не знает, что он хочет - нахуя ему вообще нужен SQL? Пусть идёт подметать подметать улицы, быдлокодеров, мнящих себя "ниибаццо ИТшниками", и без него хватает.
Ну пиздец!
Таблица с полями
ID NAME VAL
Написать запрос, который выдаст для каждого ID одинаковые строчки в количестве VAL cо значениями NAME.
Написать запрос, который выдаст для каждого ID одинаковые строчки в количестве VAL cо значениями NAME.ну про это тебе уже говорили:
на общем sql задача не решается
для каждой субд решение будет свое, для оракла и kdb+ тебе решение дали
как видишь эти решения совсем не похожи друг на друга
MS SQL походу надо.
Оставить комментарий
Usmanova72
есть две таблицыTable1. Поля ID, Name, Val. ID не по порядку идет, но уникальный. Name- текс с названием допустим инвентарного наименования. Val - количество инвентарного наименования.
Table2. Поля ID, Name. ID просто уникальный счетчик с первой таблицей не связанный, Name Фамилия сотрудника.
УСЛОВИЕ: 1 инвентраный элемент может относиться только к одному сотруднику, на одном сотруднике может висеть несколько элеметов.
Сделать запрос результат которого поля
порядковый номер, инвентарный элемент, пустое поле. НО количество, строчек с инвентарным элементом должно быть равно VAL.
все сделать одним оператором.