Avatar billede angelenglen Nybegynder
16. november 2004 - 10:37 Der er 6 kommentarer og
1 løsning

relationer mellem 3 tabeller. hvordan?

jeg har 3 tabeller, som laves ud fra følgende script:


--Opretter tabellen 'mg_kunder':
CREATE TABLE mg_kunder (
  kunde_id    int        IDENTITY NOT NULL,
  firma        char(200)    NOT NULL default "",
  fornavn    char(200)    NOT NULL default "",
  efternavn    char(200)    NOT NULL default "",
  adresse    char(200)    NOT NULL default "",
  postnr    int        NOT NULL default 0,
  city        char(200)    NOT NULL default "",
  tlf        int        NOT NULL default 0,
  fax        int        default 0,
  dato        int        NOT NULL default 0
  PRIMARY KEY  (kunde_id)
)

--Opretter tabellen 'mg_faktura':
CREATE TABLE mg_faktura (
  faktura_id    int        IDENTITY NOT NULL,
  kunde        int        NOT NULL default 0,
  vare        int        NOT NULL default 0,
  betalt    char(3)        NOT NULL default "nej",
  dato        int        NOT NULL default 0
  PRIMARY KEY  (faktura_id)
)

--Opretter tabellen 'mg_varer':
CREATE TABLE mg_varer (
  vare_id    int        IDENTITY NOT NULL,
  varenavn    char(200)    NOT NULL default "Intet Varenavn.",
  pris        int        NOT NULL default 0,
  betalt    int        NOT NULL default 0,
  dato        int        NOT NULL default 0
  PRIMARY KEY  (faktura_id)
)




i tabellen 'mg_faktura' vil jeg gerne have følgende relationer:
kunde  --> mg_kunder --> kunde_id
vare    --> mg_varer --> vare_id


hvordan gør jeg det?
Avatar billede angelenglen Nybegynder
16. november 2004 - 10:55 #1
nogen der kan hjælpe? haster lidt...
Avatar billede henke Nybegynder
16. november 2004 - 11:13 #2
Select k.*, f.*, v.* From mg_kunder k, mg_faktura f, mg_varer v
Where k.kunde_id = f.kunde
And f.vare = v.vare_id
Avatar billede angelenglen Nybegynder
16. november 2004 - 11:17 #3
hvad betyder:
k.*, f.*, v.*

dvs hvad gør de?

umiddelbart virker det, men jeg vil gerne forstå hvad jeg gør.
Avatar billede angelenglen Nybegynder
16. november 2004 - 11:21 #4
aaah ok nu fatter jeg det... havde ikke lagt mærke til de 3 bogstaver efter tabel navnene:
From mg_kunder k, mg_faktura f, mg_varer v
Avatar billede mortency Nybegynder
16. november 2004 - 11:31 #5
--Opretter tabellen 'mg_kunder':
CREATE TABLE mg_kunder (
  kunde_id    int        IDENTITY NOT NULL,
  firma        char(200)    NOT NULL default "",
  fornavn    char(200)    NOT NULL default "",
  efternavn    char(200)    NOT NULL default "",
  adresse    char(200)    NOT NULL default "",
  postnr    int        NOT NULL default 0,
  city        char(200)    NOT NULL default "",
  tlf        int        NOT NULL default 0,
  fax        int        default 0,
  dato        int        NOT NULL default 0
  PRIMARY KEY  (kunde_id)
)

--Opretter tabellen 'mg_faktura':
CREATE TABLE mg_faktura (
  faktura_id    int        IDENTITY NOT NULL,
  kunde        int        NOT NULL default 0,
  vare        int        NOT NULL default 0,
  betalt    char(3)        NOT NULL default "nej",
  dato        int        NOT NULL default 0
  PRIMARY KEY  (faktura_id)
)

--Opretter tabellen 'mg_varer':
CREATE TABLE mg_varer (
  vare_id    int        IDENTITY NOT NULL,
  varenavn    char(200)    NOT NULL default "Intet Varenavn.",
  pris        int        NOT NULL default 0,
  betalt    int        NOT NULL default 0,
  dato        int        NOT NULL default 0
  PRIMARY KEY  (faktura_id)
)

ALTER TABLE [mg_faktura] WITH NOCHECK ADD
    CONSTRAINT [PK_mg_faktura] PRIMARY KEY  CLUSTERED
    (
        [Faktura_ID]
    )  ON [PRIMARY]
GO

ALTER TABLE [mg_kunder] WITH NOCHECK ADD
    CONSTRAINT [PK_mg_kunder] PRIMARY KEY  CLUSTERED
    (
        [Kunde_id]
    )  ON [PRIMARY]
GO

ALTER TABLE [mg_varer] WITH NOCHECK ADD
    CONSTRAINT [PK_mg_varer] PRIMARY KEY  CLUSTERED
    (
        [vare_ID]
    )  ON [PRIMARY]
GO

ALTER TABLE [mg_faktura] ADD
    CONSTRAINT [FK_mg_faktura_mg_kunder] FOREIGN KEY
    (
        [Kunde]
    ) REFERENCES [mg_kunder] (
        [Kunde_id]
    ),
    CONSTRAINT [FK_mg_faktura_mg_varer] FOREIGN KEY
    (
        [vare]
    ) REFERENCES [mg_varer] (
        [vare_ID]
    )
GO

SELECT * FROM mg_faktura,mg_kunder,mg_varer
WHERE mg_kunder.kunde_ID=mg_faktura.kunde AND mg_varer.vare_ID=mg_faktura.vare
Avatar billede angelenglen Nybegynder
16. november 2004 - 13:09 #6
de 3 med primary virkede ikke, da der allerede er defineret primary.

den sidste lavede godt nok en relation, men hvordan bruger man den?
I din select sætning bruger du den da ikke, gør du?

det her var det der virkede:
ALTER TABLE [mg_faktura] ADD
    CONSTRAINT [FK_mg_faktura_mg_kunder] FOREIGN KEY
    (
        [Kunde]
    ) REFERENCES [mg_kunder] (
        [Kunde_id]
    ),
    CONSTRAINT [FK_mg_faktura_mg_varer] FOREIGN KEY
    (
        [vare]
    ) REFERENCES [mg_varer] (
        [vare_ID]
    )
GO
Avatar billede mortency Nybegynder
16. november 2004 - 13:42 #7
Sorry det ser jeg nå!

Nei den oppretter kun  relationer i databasen. SQL`en benytter ikke den.

//Morten
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester