19. september 2002 - 11:25Der er
11 kommentarer og 1 løsning
Sammkædning af tabeller
Goddag! Jeg har brug for at finde ud af hvordan man sammenkører tabeller i access eller msSQL.
Jeg har en tabel1 med et unikt ID, et navn på en producent og et modelID. Derudover har jeg en tabel2 med et Unikt ID, producentnavnet, og modelnavnet.
Jeg vil gerne have en ny tabel3 som indeholder Unikt ID, Producent ID, og modelnavnet. Producent ID´et skal ikke bare være unikt for hver producent men også for hvilke modeller han producerer. Altså ProducentID = ID i tabel1
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Hvis "unikt ID" er ens i begge tabeller, laver du en forspørgsel hvor du "joiner" de to felter, og medtager de felter du skal bruge, gemmer forspørgslen.
Herefter kan du "importerer" forspørgslen som en tabel
Jeg skal (som sædvanlig) have bekræftet, om jeg har forstået spørgsmålet korrekt.
Når dine felter har fornuftige navne, så bør dine tabeller også. Jeg har lavet et eksempel, som forhåbentlig er det du skriver/skal bruge: (PK markerer de felter, som udgør primærnøglen)
producent: PK ID producentnavn
model: PK ID modelnavn
producentModelRelation: ID PK ProducentID PK modelID
Kommentarer: Kombinationen af producent og model skal være unik (PK) i tabellen producentModelRelation. Feltet ID er næsten overflødigt (?) Hver række i tabellen producentModelRelation beskriver en model, som en producent producerer. Der skal laves (fremmednøgle) relationer, så ProducentID og modelID peger på ID i tabellerne producent og model.
Når du gerne vil præsentere det du kalder tabel 3, så kan du lave en Query i Access eller et view i msSQL: SELECT producentModelRelation.ID, producentModelRelation.ProducentID, model.modelnavn FROM producentModelRelation, model WHERE producentModelRelation.modelID = model.ID;
Måske vil du hellere vise: SELECT producent.producentnavn, model.modelnavn FROM producent, model, producentModelRelation.modelID WHERE producentModelRelation.modelID = model.ID AND producentModelRelation.producentID = producent.ID ORDER BY producent.producentnavn;
jkrons > PK er ikke en del af feltnavnet. PK angiver bare hvilke felter der danner primærnøglen i tabellen :o) SELECT Model.ID AS ModelID, Producent.ID AS ProducentID, Modelnavn INTO nyModel FROM Model INNER JOIN Producent ON Model.ID = Producent.ID;
bonko20 > Jeg kan ikke rigtig regne ud, om NyModel bare skal vælge data fra de andre tabeller - så kunne NoModel jo være en forespørgsel i stedet for en tabel.
bongo20 > Jeg synes din model trænger til at blive strammet lidt op: tabellen model og NyModel indeholder i information af præcis type. Hvad med at lade tabellen model indeholde BÅDE nye og gamle modeller? Du kan stadig have en tabel NyModel: NyModel: PK ID modelID (peger på et ID i tabellen model)
Du kan stadig få de samme data ud: SELECT NyModel.ID, NyModel.ProducentID, model.modelNavn FROM NyModel, model WHERE NyModel.modelID = model.ID
eller måske skal tabellen vise både ny og gammel model: NoModel: PK ID NyModelID (peger på et ID i tabellen model) GammelModelID (peger på et ID i tabellen model)
bonko20 > Du har bla. problemer fordi din model ikke er normaliseret - du kan læse om normalsering senere :o) Nogle steder anvender du ProducentID og andre steder anvender du producent(navn), så bliver det ekstra kompliceret (men ikke umuligt) at lave joins.
Tag et ekstra kig på min første model. Hvis den skal ligne din problemstilling, så laver vi lige navnene om:
producent: PK ID producentnavn
modelnavn: PK ID modelnavn
model: ( UK betyder unik nøgle (Unique Key) ) PK ID UK ProducentID (peger på ID i producent) UK modelnavnID (peger på ID i modelnavn)
NyModel: PK ID (Nye modeller på model tabellen - et ekstra ID er nok overflødigt) UK modelID (peger på ID i model)
bongo20 > Hvis det 'kun' var et spørgsmål om at trække data ud, så tror jeg, at katborg var meget tæt på det rigtige svar.
Fandt aldrig ud af, om det bare var en join du skulle bruge. Mine svar gik på oprettelse af en ny database.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.