15. december 2005 - 01:24Der er
14 kommentarer og 1 løsning
Foreign key
hey jeg har en tabel med nogle ingredienser. hver ingrediens har en unit (kg/gram/stk) etc den unit har jeg lavet i en ny tabel og så lavet en FOREIGN KEY fra ingredient tabellen til unit men når jeg så forespørger på ingredient_navn og unit.navn gentager den posterne så jeg for 63 istedet for de 9 der i tabellen ingredient. hvad gør jeg forkert
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Slettet bruger
15. december 2005 - 05:57#1
nu husker du en betingelse når du joiner ikke?
Ala: select * from ingredient, unit where ingredient.unitId = unit.Id
men jeg skal have vist alle i tabellen ingredient. men skal have vist unit.navn ikke ingredient.unitid. den skal lave et opslag i tabellen unit og hente navnet . troede man kunne lave det via en relation .
Synes godt om
Slettet bruger
15. december 2005 - 06:11#3
Det er ikke relationen der gør det. En FK er anvendes til check af referenciel integritet, check som at du ikke kan indsætte en unit værdi som ikke findes i tabellen med primær nøglen. Det har intet med udtræk at gøre, du kan joine ud relationer, relationer er kun til konsistens check.
Antager du har noget der ligner
Tabel ingredient id name unit (antallet af enheder) unitId (denne er FK til id i tabellen Units)
Tabel units id name
Måden at vise det på vil være :
SELECT ingredient.navn, ingredient.unit, units.name FROM ingredient, units WHERE ingredient.unitId = units.id
Ovenstående viser dig ingridiens navn, enhed og enhedsangivelse.
SELECT ingredient.navn, ingredient.units, ingredient.id, units.name FROM units JOIN ingredient ON units.id = ingredient.units ORDER BY ingredient.navn;
CREATE TABLE ingredient ( id serial NOT NULL, navn varchar(50) NOT NULL, unitprice numeric NOT NULL DEFAULT 0::numeric, stock int4 NOT NULL DEFAULT 0, units int4 NOT NULL DEFAULT 0, CONSTRAINT ingredient_pkey PRIMARY KEY (id, units), CONSTRAINT ingredient_units_fkey FOREIGN KEY (units) REFERENCES units (id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT ingredient_id_key UNIQUE (id) ) WITHOUT OIDS; ALTER TABLE ingredient OWNER TO dm26;
Synes godt om
Slettet bruger
15. december 2005 - 07:50#11
Du kan som sagt ikke lave noget med "relationer" der er ikke rigtigt noget som hedder relationer, som kan definerer. Der kan definerer referencial integritet, som ofte opfattes som relationer, men der er ingen automatik i forhold til udtræk.
Det du ønsker skal laves med et join. Og det join kunne jo være et View hvis du ønsker at kunne tilgå det direkte uden selv at skulle lave join hvergang.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.