[]

sql sorusu

select a.aid, b.name,c.age
from aa a (nolock)
inner join bb b (nolock) on a.aid=b.aid
inner join ff f (nolock) on b.bid=f.bid
inner join cc c (nolock) on f.cid=c.cid
where c.name='tpa'

şimdi böyle bi sorguyla üç kolon geliyor bununla birlikte şuna benzer bi update işlemi yapmam lazım:

update
(select a.aid, b.name,c.age
from aa a (nolock)
inner join bb b (nolock) on a.aid=b.aid
inner join ff f (nolock) on b.bid=f.bid
inner join cc c (nolock) on f.cid=c.cid
where c.name='tpa'
)
set c.name='xxx' where b.bid=111

c ile b arasında bi bağlantı yok. sorabildim mi bilmiyorum ama nasıl yaparım bunu?

 
ilk cektigin sorguna x deyip, sadece o sorgudan cektigin degerleri update edebilirsin, kosul olarak da ayni sekilde, sadece ordan cektiklerine kosul verebilrisin;

update
(select a.aid, b.name,c.age
from aa a (nolock)
inner join bb b (nolock) on a.aid=b.aid
inner join ff f (nolock) on b.bid=f.bid
inner join cc c (nolock) on f.cid=c.cid
where c.name='tpa'
) x
set x.name='xxx' where x.bid=111

bu update'i kayitlar coklandigi icin oracle yapmaz, her durumda yapmasini istersen, su hint'i eklemen lazim '/*+ BYPASS_UJVC */', yani soyle olur;

update /*+ BYPASS_UJVC */
(select a.aid, b.name,c.age
from aa a (nolock)
inner join bb b (nolock) on a.aid=b.aid
inner join ff f (nolock) on b.bid=f.bid
inner join cc c (nolock) on f.cid=c.cid
where c.name='tpa'
) x
set x.name='xxx' where x.bid=111
  • nawres  (31.01.12 10:20:12) 
update cc
set cc.name = 'xxx'
from aa
join bb on aa.aid=bb.aid
join ff on bb.bid=ff.bid
join cc on ff.cid=cc.cid
where cc.name = 'tpa' and bb.bid = 111

gibi bir şey olur sanırım.
  • ocanal  (31.01.12 10:28:05 ~ 10:30:05) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.