03. februar 2004 - 10:40Der er
19 kommentarer og 3 løsninger
Underkatagorier til database
Hej,
Jeg vil lave en base over nogle virksomheder, hvor nogle af virksomhederne er koncernvirksomhed/hovedsæde, mens andre er filialer/tilknyttede virksomheder. Jeg vil således gerne have at det kan lade sig gøre at knytte virksomhederne under samme koncernnummer sammen - men at grundinfo fra selve koncernvirksomheden figurerer på under-virksomhederne:
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Normalt har man netop en koncern-tabel og en afdelings/firma-tabel. Koncernen gemmer kun på oplysninger som navn, web-adresse og måske olysninger om hovedsæde. I den anden tabel gemme man alle firmaerne, som vha KoncernID fortæller hvilken koncern de hører til. Grunddata (adresse m.m.) skal altså IKKE ligge på koncern-niveau.
Jeg har valgt at give et ja/nej felt til valg af om det er "moderselskab"... Derfor, hvis det er et ja felt skal man kunne indtaste nogle grunddata, mens der ved nej - bør vises grunddata fra det moderselskab virksomheden tilhører (dvs. samme koncernr.)
Den model, som du beskriver er ikke altid så hensigtsmæssig.
Hvis du vælger den løsning, som jeg og HNteknik beskriver, så bør alle firmaer i princippet have en koncern (også den lokale grønthandler på hjørnet), men da Koncern-informationer oftest kun er 2-3 felter betyder det rent praktisk ikke noget.
Hej Thomas, Jeg laver tabellen over nogle virksomheder som på forhånd er bestemt som koncerner. Tabellen skal indeholde samtlige virksomheder, såvel moder- som datterselskaber... Prøver lige dit eksempel :)
Det er ikke livsnødvendigt...kun hvis man vil bevare databasen normaliseret og uden redundante date og undgå at gøre opdateringer i f.eks. adresseoplysninger kompliceret(med andre; ja, det er den rigtigste måde med 2 tabeller).
Hvis du forestiller dig, at du kun havde en tabel med samtlige oplysninger om firmaet og f.eks. have 2 feltr som beskrev koncernnavn og web-adresse. Hvis du så feks skal ændre koncernnavnet eller web-adressen (som regel begge samtidig, som det skete med f.eks. FDB/Coop for et par år siden), så skal du ned i samtlige underafdelinger og rette.
Kan man så lave et (automatisk) tabel udtræk i en tabel nr. 2, som hiver data ud fra de poster som har udfyldt afkrydsningsfeltet "moderselskab" - og derefter kan de andre virksomheder trække nogle data fra moderselskabet med deres tilhørende koncernnr.?
Jeg ved ikkeom du har fået svar, men tblkoncern kunne indeholde ( koncernID, Navn, ....) tblfirma kunne indeholde (FirmaID, ModerID, KOncernID,navn, Adr,...)
En aavenceret udgave er kun at have en tabel tblFirma ( FirmaID, ModerID, Navn, Adr,TLF etc.)
Moderselskabet har en tom moderid, resten har moderid som moderselskabet eldler et andet firma under.
Du laver en forespørgsel som har tblfirma og en kopi af tblfirma as moder. Link går fra firmaid i moder til moderid i tblfirma.
Så kan du lave en visning if modid is not null, så har du et barn og kan vise moderdata ( adr etc.)
SELECT tblfirma.firmaid, tblfirma.moderid, tblfirma.navn, tblfirma.adr, tblmoder.navn AS Modernavn, tblmoder.adr AS moderadr FROM tblfirma AS tblmoder RIGHT JOIN tblfirma ON tblmoder.firmaid = tblfirma.moderid;
Du kan lave lidt gimmick ved f.eks. at gøre sådan:
SELECT IIf(IsNull([tblfirma].[moderid]),"","---->") & [tblfirma].[navn] AS Firmanavn, tblfirma.adr, tblmoder.navn AS Modernavn, tblmoder.adr AS moderadr FROM tblfirma AS tblmoder RIGHT JOIN tblfirma ON tblmoder.firmaid = tblfirma.moderid ORDER BY tblfirma.moderid, tblfirma.navn;
det skulle gerne se sådan ud: Firmanavn adr Modernavn moderadr Koncern koncernvej ---->firma1 firma1vej Koncern koncernvej ---->firma2 firma2vej Koncern koncernvej
Nu er det sådan, at du sikkert gerne vil have flere koncerner ind i billedet, så må indføre et koncernID, hvor firmaer unde samme koncern har samme id (f.eks. 1, 2 etc.)
SELECT IIf(IsNull([tblfirma].[moderid]),"","---->") & [tblfirma].[navn] AS Firmanavn, tblfirma.adr, tblmoder.navn AS Modernavn, tblmoder.adr AS moderadr FROM tblfirma AS tblmoder RIGHT JOIN tblfirma ON (tblmoder.koncernid = tblfirma.koncernid) AND (tblmoder.firmaid = tblfirma.moderid) ORDER BY tblfirma.koncernid, tblfirma.moderid, tblfirma.navn;
Beklager mange gange at jeg først reagerer nu. Problemet blev hastigt delt videre til en anden person og med tankerne andetsteds - glemte jeg jeg desværre alt om tråden og at reagere på jeres hjælp!
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.