|
Помогите, плз, составить наихитрейший запрос !!!
|
|||
---|---|---|---|
#18+
Вот хочу обединить 2 таблицы по 2 полям, и толком не знаю как это сделать... попробывал "в лоб", но естественно не получилось... select * from pro.prod p ,pro.brak b where (p.prodsheet, p.goods) = (b.prodsheet, b.goods) /* по аналогии с where (a, b) in (select c, d from...) */ Оракл должен уметь это делать, уж если он с иерархическими запросами работает select id, owner, lpad(' ', 4*(Level-1)) || name, level from main.dept start with id=0 connect by prior id=owner; то с таким-то должен справляться, тока надо знать как... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2002, 11:40 |
|
Помогите, плз, составить наихитрейший запрос !!!
|
|||
---|---|---|---|
#18+
select * from pro.prod p,pro.brak b where (p.prodsheet=b.prodsheet) and (p.goods=b.goods) если я только правильно поня, что ты хочешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2002, 12:37 |
|
Помогите, плз, составить наихитрейший запрос !!!
|
|||
---|---|---|---|
#18+
Боюсь что не совсем правильно, мне нужно сравнивать именно пару значений, а не каждое в отдельности. pro.prod - скока и чего произведено pro.brak - а это скока брака и какого prodsheet - номер ведомости goods - код изделия val - количество brak_type - тип брака pro.prod pro.brak prodsheet goods val prodsheet goods brak_type val 2 1 20 2 1 1 2 2 2 30 2 1 3 1 2 3 40 2 5 3 3 2 5 50 2 5 4 11 на выходе хочу видеть prodsheet goods goods_val brak_type brak_val 2 1 20 1 2 2 1 20 3 1 2 2 30 2 3 40 2 5 50 3 1 2 5 50 4 11 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2002, 14:02 |
|
Помогите, плз, составить наихитрейший запрос !!!
|
|||
---|---|---|---|
#18+
select * from pro.prod p,pro.brak b where p.prodsheet=b.prodsheet(+) and p.goods=b.goods(+) на твоем примере дает то, что надо. если и это не то, тогда по-подробнее, а то я что-то совсем отупел и фраза "мне нужно сравнивать именно пару значений" мне совсем непонятна. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2002, 14:39 |
|
Помогите, плз, составить наихитрейший запрос !!!
|
|||
---|---|---|---|
#18+
Дает то, что надо исключительно потому, что имеется ТОЛЬКО одно значение prodsheet, в таком случае из запроса вообще энтот критерий ( p.prodsheet=b.prodsheet ) можно выкинуть, а если а вот если значений prodsheet 2 и более, то энтот запрос не пригоден -) ну ладно проехали, я по-другому сделаю... Спасибо за участие -) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2002, 15:00 |
|
Помогите, плз, составить наихитрейший запрос !!!
|
|||
---|---|---|---|
#18+
а если так ? select A.prodsheet,A.goods,A.brak_type,min(A.val),min(A.val_brak) from (select P.*,B.brak_type,B.val as val_brak from med.prod P,med.brak B where P.prodsheet=B.prodsheet(+) and P.goods=B.goods(+) ) A where A.prodsheet=2 --или чему другому group by A.prodsheet,A.goods,A.brak_type ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2002, 15:38 |
|
Помогите, плз, составить наихитрейший запрос !!!
|
|||
---|---|---|---|
#18+
Извратимся. where (trim(to_char(p.prodsheet))||','||trim(to_char( p.goods))) = (trim(to_char(b.prodsheet))||','||trim(to_char( b.goods))) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2002, 19:50 |
|
Помогите, плз, составить наихитрейший запрос !!!
|
|||
---|---|---|---|
#18+
Ну так а в чем проблема? Тут хоть на чем можно сделать, не только на Оракле: select * from pro.prod p ,pro.brak b where p.prodsheet = b.prodsheet and exists(select 1 from pro.brak b1 where b1.goods = p.goods and b1.prodsheet = b.prodsheet) ну или лучше в exists вместо prodsheet сравниваться по ID ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2002, 15:47 |
|
|
start [/forum/topic.php?fid=52&msg=32038450&tid=1993231]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
10ms |
check topic access: |
10ms |
track hit: |
33ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 41ms |
total: | 171ms |
0 / 0 |