Avatar billede muddi Praktikant
27. maj 2002 - 19:36 Der er 7 kommentarer og
1 løsning

Mange-til-mange relationer?

Jeg har forsøgt at lave en mange-til-mange database-løsning i MySQL! Jeg har oprettet 3 tabeller som ser ud som følger:

CREATE TABLE mitb_kategori (
  kategori_id tinyint(4) NOT NULL auto_increment,
  kategori_navn varchar(25) NOT NULL default '',
  PRIMARY KEY  (kategori_id)
) TYPE=MyISAM;


CREATE TABLE mitb_vare (
  vare_id tinyint(4) NOT NULL auto_increment,
  vare_navn varchar(25) NOT NULL default '',
  PRIMARY KEY  (vare_id)
) TYPE=MyISAM;


CREATE TABLE mitb_kategori_vare (
  vare_kategori_id tinyint(4) NOT NULL auto_increment,
  kategori_rel tinyint(4) NOT NULL default '0',
  vare_rel tinyint(4) NOT NULL default '0',
  PRIMARY KEY  (vare_kategori_id)
) TYPE=MyISAM;

I tabellen mitb_kategori_vare er vare_id gemt sammen med kategori_id ... Nu til spørgsmålene!

Hvordan henter jeg alle mine varer og sorterer dem efter kategorier, og hvis en vare er i flere kategorier skal den udskrives i hver kategori?

Skriv endelig, hvis I har nogen spørgsmål :o)
Avatar billede muddi Praktikant
27. maj 2002 - 19:38 #1
Hvis du har en bedre løsning til hvordan en vare kan ligge i mange kategorier, vil jeg meget gerne høre dit bud!
Avatar billede hansk Nybegynder
27. maj 2002 - 19:49 #2
SELECT * FROM mitb_kategori, mitb_vare, mitb_kategori_vare
WHERE
kategori_id = kategori_rel AND
vare_rel    = vare_id
ORDER BY kategori_id

Giver dig alle varer pr kategori.

ps. Du behøver ikke at oprette en vare_kategori_id da du har en sammensat nøgle af de to andre fremmednøgler på mitb_kategori_vare  tabellen.
Avatar billede muddi Praktikant
27. maj 2002 - 20:09 #3
hansk >> Jeg prøver lige dit bud!
Hvordan bruger man en sammensat nøgle?
Avatar billede muddi Praktikant
27. maj 2002 - 20:31 #4
Det virker fint, men vil du ikke forklare det med sammensatte nøgler? Ellers må jeg lige kigge i en af mine bøger :o)
Avatar billede hansk Nybegynder
27. maj 2002 - 20:47 #5
En sammensat nøgle er en nøgle som består af flere felter.
Din tabel som indeholder relationerne vil kunne indekseres direkte via de to fremmednøgler som du allerede har i tabellen, og disse vil sikre at du ikke får dubletter. Der er altså ikke nogen grund til at oprette yderligere id's.
Hvis du alligevel opretter et særskilt id for denne tabel, vil du i princippet risikere at du får flere ens relationer oprettet.
Avatar billede muddi Praktikant
27. maj 2002 - 20:54 #6
Hvis jeg så sletter nuværende nøgle i den tabel, hvordan gør jeg så sådan så vare_rel og kategori_rel bliver sammensat nøgle?
Avatar billede muddi Praktikant
27. maj 2002 - 20:55 #7
Kan jeg gøre det via phpMyAdmin?
Avatar billede muddi Praktikant
27. maj 2002 - 21:01 #8
Jeg har klaret det! Mange tak for hjælpen! :o)
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