data modeling - How to properly link 2 sql tables with a referential table -


in sql+, i've created 2 tables store data , 1 cross reference them. goal able write single query show me car in dealership, , dealership offers car, etc. problem when query anything, each car in each dealership.

drop table car_dealer; drop table car; drop table dealer;  create table dealer(     did     number primary key,     dname       varchar2(20)  ); create table car(     cid     number primary key,     cname       varchar2(20) ); create table car_dealer(     cid     number references car(cid),     did     number references dealer(did),     constraint pk_car_dealer primary key (cid,did) );  insert car values (1,'buick skylark');  insert car  values (2,'h2 hummer');  insert car  values (3,'chevy suburban');  insert car  values (4,'bmw z3');  insert car  values (5,'bmw 328i');  insert car  values (6,'jeep wrangler');  insert car values (7,'ford focus');  insert car  values (8,'range rover');  insert car  values (9,'toyota supra');  insert car  values (10,'ferrari testarosa');  insert car values (11,'jaguar x12');  insert car  values (12,'ford fairmont');  insert dealer values (100,'midnight movers');  insert dealer  values (200,'bubbas imports');  insert dealer values (300,'import motors');  insert car_dealer (cid,did) values (1,100);  insert car_dealer (cid,did) values (2,100);  insert car_dealer (cid,did) values (3,100);  insert car_dealer (cid,did) values (4,100);  insert car_dealer (cid,did) values (5,100);  insert car_dealer (cid,did) values (6,100);  insert car_dealer (cid,did) values (1,200);  insert car_dealer (cid,did) values (2,200);  insert car_dealer (cid,did) values (3,200);  insert car_dealer (cid,did) values (4,200);  insert car_dealer (cid,did) values (5,200);  insert car_dealer (cid,did) values (6,200);  insert car_dealer (cid,did) values (7,300);  insert car_dealer (cid,did) values (8,300);  insert car_dealer (cid,did) values (9,300);  insert car_dealer (cid,did) values (10,300);  insert car_dealer (cid,did) values (11,300);  insert car_dealer (cid,did) values (12,300);  select  dname,     cname    dealer,car   did = 200;  select  dname, cname    dealer,car   cid = 4; 

midnight movers(100) , bubba's imports(200) should both have cars 1-6 only, , import motors(300) should have cars 7-12 only. instead dealerships have cars, , figuring out why.

this happens when don't specify joins. proper results should change queries following:

select      d.dname, c.cname      car_dealer cd join      car c on cd.cid = c.cid join      dealer d on cd.did = d.did      cd.did = 200;  select      d.dname, c.cname      car_dealer cd join      car c on cd.cid = c.cid join      dealer d on cd.did = d.did      cd.cid = 4; 

here sql fiddle http://sqlfiddle.com/#!4/98833/4


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -