[ ivankos @ 09.09.2011. 12:00 ] @
Pozdrav svima, pokusao sam da po raznim formumima pronadjem odgovor na pitanje koje ovom prilikom postavljam i nisam uspeo da pronadjem zadovoljavajuci odgovor. Postoje 3 tabele popunjene sa sledcim sadrzajem: t1 +-----+----------+ | id | opis | +-----+----------+ | id1 | t1.opis1 | +-----+----------+ t2 +-----+----------+ | id | opis1 | +-----+----------+ | id1 | t2.opis1 | | id1 | t2.opis2 | +-----+----------+ t3 +-----+----------+ | id | opis2 | +-----+----------+ | id1 | t3.opis1 | | id1 | t3.opis2 | | id1 | t3.opis3 | +-----+----------+ gde su tabele definisane sa: create table tx ( `id` int(10) NOT NULL autoincrement', `opis` varchar(20) NOT NULL collate latin1_general_ci default '-', ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; uslov povezivanja ovih tabela je: t1.id=t2.id t1.id=t3.id a rezultijuca tabela treba da ima sledeci konacan oblik: t4 +-----+----------+----------+----------+ | id | opis | opis1 | opis2 | +-----+----------+----------+----------+ | id1 | t1.opis1 | t2.opis1 | t3.opis1 | | id1 | t1.opis1 | t2.opis2 | t3.opis2 | | id1 | t1.opis1 | NULL | t3.opis3 | +-----+----------+----------+----------+ Kada je t4 potpuno prazna tabela primenom slqdecih SQL upita INSERT INTO t4 (t4.id,t4.opis2) SELECT t3.id,t3.opis FROM t3 WHERE t3.id=id1; update t4,t1 set t4.opis=t1.opis where t1.id=id1 and t1.id=t4.id; dobija se: t4 +-----+----------+----------+----------+ | id | opis | opis1 | opis2 | +-----+----------+----------+----------+ | id1 | t1.opis1 | NULL | t3.opis1 | | id1 | t1.opis1 | NULL | t3.opis2 | | id1 | t1.opis1 | NULL | t3.opis3 | +-----+----------+----------+----------+ Potom kada se izvrsi SQL upit update t4,t2 set t4.opis1=t2.opis where t2.id=id1 and t2.id=t4.id; dobija se: t4 +-----+----------+----------+----------+ | id | opis | opis1 | opis2 | +-----+----------+----------+----------+ | id1 | t1.opis1 | t2.opis1 | t3.opis1 | | id1 | t1.opis1 | t2.opis1 | t3.opis2 | | id1 | t1.opis1 | t2.opis1 | t3.opis3 | +-----+----------+----------+----------+ a potrebno je da tabela t4 ima sledeci oblik: t4 +-----+----------+----------+----------+ | id | opis | opis1 | opis2 | +-----+----------+----------+----------+ | id1 | t1.opis1 | t2.opis1 | t3.opis1 | | id1 | t1.opis1 | t2.opis2 | t3.opis2 | | id1 | t1.opis1 | NULL | t3.opis3 | +-----+----------+----------+----------+ Kako da dobijem rezultujucu tabelu, ako se zna da u tabeli t1 realno postoji priblizno 100.000 slogova (recorda), a tabele t2 i t3 ne moraju sadrzati zapise koji svojom identifikacijom odgovaraju slogovima iz tabele t1? Resenje mora da podrazumeva da se ne koriste programske sekvence, vec iskljcivo SQL naredbe kojima se moze generistai rezultujuca tabela. unapred hvala |