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
Post a Comment