Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Iscitavanje samo razlicitih redova iz tabela

[es] :: MS SQL :: Iscitavanje samo razlicitih redova iz tabela

[ Pregleda: 1253 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kg.rules
CSK
KG

Član broj: 270577
Poruke: 12
147.91.200.*



Profil

icon Iscitavanje samo razlicitih redova iz tabela27.11.2011. u 11:35 - pre 150 meseci
Pozdrav svima,
pravim neku aplikaciju sa bazama pa sam se nesto zapetljao. Do sada je sve islo manje-vise ok tj nalazio sam resenja problema relativno lako (uz pomoc net.a naravno) ali oko ovoga se mucim vec nedelju-dve i nikako da nadjem pravu kombinaciju.

Zapravo, problem je u tome sto zelim da iz dve tabele izlistam samo razlicite redove. Tabele nemaju istu srukturu.

Npr, tabela 1: ID1, ID2, naziv
tabela 2: ID, naziv, adresa ....

E sad, redovi iz tabele 2 se nalaze i u tabeli 1.

Muci me kako da iz ove dve tabele izvucem samo redove koji su u tabeli jedan a koji nisu jednaki sa redovima iz tabele 2 (naravno gledajuci po id).

U nekom konkretnom slucaju:
tabela 1: ID1 = 100, ID2 = 54, naziv = "prvi red"
ID1 = 100, ID2 = 1, naziv = "drugi red"
ID1 = 100, ID2 = 32, naziv = "treci red"
ID1 = 100, ID2 = 3, naziv = "cetvrti red"

tabela 2: ID = 54, naziv = "Naziv u tabeli 2", adresa = "izmisljena 11"
ID = 32, naziv = "Naziv 2 u tabeli 2", adresa = "izmisljena 12"

Rezultat koji zelim da dobijem je tabela sa 2 reda i to:
ID1 = 100, ID2 = 1, naziv = "drugi red"
ID1 = 100, ID2 = 3, naziv = "cetvrti red"

Probao sam skoro sve na temu: "SELECT * FROM table1, table2 WHERE ID1 = 100 AND ID2 <> ID" ali on zapravo duplira redove ali i sa tako dupliranim redovima ako uradim DISTINCT
opet ne dobijem ono sto bih zeleo.

Nadam se da ima pomoci ovom problemu. Unapred hvala ...

P.S. ID2 sadrzi redove iz druge tabele.

 
Odgovor na temu

Dusan Kondic
Programer
ZR "Parametar" Ljubovija
Ljubovija

Član broj: 49961
Poruke: 225
*.adsl-a-7.sezampro.rs.

Sajt: www.drinacoding.com


+14 Profil

icon Re: Iscitavanje samo razlicitih redova iz tabela27.11.2011. u 11:58 - pre 150 meseci
Ako sam dobro razumeo, ovo bi trebalo da bude rešenje
Code:

--RESENJE 1
SELECT * FROM table1 WHERE ID2 NOT IN (SELECT ID FROM table2)
ili
--RESENJE 2
SELECT t1.* FROM table1 t1 LEFT JOIN table2 t2 ON t1.ID2 = t2.ID WHERE t2.ID IS NULL

Primer:
Code:

DECLARE @table1 TABLE(ID1 INT, ID2 INT, Naziv VARCHAR(20))
INSERT INTO @table1 (ID1, ID2, Naziv) VALUES(100, 54, 'prvi red')
INSERT INTO @table1 (ID1, ID2, Naziv) VALUES(100, 1, 'drugi red')
INSERT INTO @table1 (ID1, ID2, Naziv) VALUES(100, 32, 'treci red')
INSERT INTO @table1 (ID1, ID2, Naziv) VALUES(100, 3, 'cetvrti red')

DECLARE @table2 TABLE(ID INT, Naziv VARCHAR(20), Adresa VARCHAR(30))
INSERT INTO @table2 (ID, Naziv, Adresa) VALUES(54, 'Naziv u tabeli 2', 'izmisljena 11')
INSERT INTO @table2 (ID, Naziv, Adresa) VALUES(32, 'Naziv 2 u tabeli 2', 'izmisljena 12')

--RESENJE 1
SELECT * FROM @table1 WHERE ID2 NOT IN (SELECT ID FROM @table2)

--RESENJE 2
SELECT t1.* FROM @table1 t1 LEFT JOIN @table2 t2 ON t1.ID2 = t2.ID WHERE t2.ID IS NULL
 
Odgovor na temu

kg.rules
CSK
KG

Član broj: 270577
Poruke: 12
147.91.200.*



Profil

icon Re: Iscitavanje samo razlicitih redova iz tabela27.11.2011. u 12:24 - pre 150 meseci
Lepo si ti razumeo ali moras priznati da sam ja lepo i obijasnio problem :)

Salim se naravno.

Primenio sam prvo resenje. Radi bas ono sto mi je potrebno.

Ima nekoliko mesta gde mislim da bih mogao da uradim ovakav JOIN pa cu pokusati da ispravim to jer se bojim da je moj pristup bio aljkav
jer sam koristio distinct mada mi radi zadovoljavajuce tvoje resenje je puno cistije a samim tim i preporucljivije za upotrebu.

Puno hvala...
 
Odgovor na temu

[es] :: MS SQL :: Iscitavanje samo razlicitih redova iz tabela

[ Pregleda: 1253 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.