Gå til innhold

Koble sammen innhold i to databaser


Anbefalte innlegg

Jeg arbeider med å overføre CVen min fra en statisk html-side til en database-drevet side. Ikke det at jeg trenger det, men for moro og læringen.

 

Problemet mitt er at jeg har flere referanser som hører til flere forskjellige CV-poster. For å kunne hente frem referansene til en bestemt jobb så må jeg kunne ha en kobling til IDen til alle de forskjellige jobbene som hører sammen med den aktuelle referansen.

 

Hvordan bør jeg gå frem for å gjøre det?

 

Det bør kanskje nevnes at for enkelte av jobbene så har jeg også flere referanser slik at å flytte koblingsproblemet over til tabellen for jobbene ikke nødvendigvis løser problemet.

Lenke til kommentar
Videoannonse
Annonse

En enkel løsning:

 

jobs: [id, data1, data2]

references: [id, data1, data2]

job_reference: [job_id, reference_id]

 

insert into jobs values (1, 'x1', 'y1'), (2, 'x2', 'y2');

insert into references(1, 'x3', 'y3');

insert into job_reference values (1, 1), (2, 1);

 

select * from references where job_id = 1;

select * from references where job_id = 2;

^

Disse to spørringene returnerer samme referanse.

Endret av JohndoeMAKT
Lenke til kommentar

select * from jobs j left join job_references jr on j.id = jr.job_id inner join references r on jr.reference_id = r.id where blababla ...

 

select * from references r left join job_references jr on r.id = jr.refenrece_id inner join jobs r on jr.job_id = j.id where blablabla ...

 

pointet med left join i den første spørringen er at du da får med jobber du ikke har referanser til (inner join vil utelukke rader i jobs hvor det ikke er noen kobling til job_references). ditto i den andre spørringen, left join tar med referanser du ikke har jobbet for ... men den varianten er kanskje ikke så aktuell...

 

du bør også legge på fremmednøkkelbegrensninger slik at det ikke er mulig å ha rader i job_references som peker til slettede rader i jobs eller references. (google "foreign key constraint").

 

mht. overskriften din så er det altså snakk om to tabeller, ikke to databaser.

Lenke til kommentar

Du har én tabell _kun_ med jobber og én tabell _kun_ med referanser. Så lager du en "join tabell" mellom de to som for hver rad kun inneholder ID-en til én jobb og én referanse.

 

Lag de tabellene og lim inn "show create table" her, så kan jeg svare.

Her er de tre relevante tabellene mine:

CREATE TABLE IF NOT EXISTS `Jobref` (
 `id` int(3) NOT NULL AUTO_INCREMENT,
 `job_id` int(3) NOT NULL,
 `ref_id` int(3) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

 

CREATE TABLE IF NOT EXISTS `Referanser` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `Fornavn` varchar(26) COLLATE utf8_unicode_ci NOT NULL,
 `Etternavn` varchar(25) COLLATE utf8_unicode_ci NOT NULL,
 `Bedrift` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
 `Stilling` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
 `Telefon` mediumint(20) NOT NULL,
 `E-post` text COLLATE utf8_unicode_ci NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

 

CREATE TABLE IF NOT EXISTS `Yrker` (
 `id` mediumint(4) NOT NULL AUTO_INCREMENT,
 `mndstart` tinyint(2) NOT NULL,
 `yearstart` year(4) NOT NULL,
 `mndslutt` tinyint(2) DEFAULT NULL,
 `yearslutt` year(4) DEFAULT NULL,
 `arbeidsplass` text COLLATE utf8_unicode_ci NOT NULL,
 `stilling` text COLLATE utf8_unicode_ci NOT NULL,
 `beskrivelse` text COLLATE utf8_unicode_ci,
 `WWW` text COLLATE utf8_unicode_ci,
 `Kategori` tinyint(1) NOT NULL,
 `Bruk` int(1) DEFAULT NULL,
 UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=63 ;

 

Tabellstrukturen min er tenkt slik:

Tabell 1:

Yrker, utdanninger, verv og kurs

 

Tabell 2:

IT-Kompetanse, Språk-kompetanse og sertifikater

Id, hva? kompetansegrad, type kompetanse

 

Tabell 3:

Referanse

Id, Fornavn, etternavn, Bedrift, Stilling, Telefon, Epost

 

Tabell 4:

Attest:

ID-Tabell1, tittel, PDF-fil

 

Tabell 5:

Jobref:

Id, jobid, refid

 

Tabell 6:

jobatt:

id, jobid, attestid

Lenke til kommentar

i Jobref-tabellen bør du ha en unik nøkkel på job_id og ref_id, og du kan da også bruke denne som pk. dessuten bør du legge på fremmednøkler, som nevnt.

 

Ps, generelt er det også en fordel med innoDB istedenfor myIsam, ihvertfall hvis du ønsker at mysql skal oppføre seg sånn nogenlunde som en rdbms. Bedre ytelse får du også.

Endret av quantum
Lenke til kommentar
  • 2 uker senere...

Så, hvordan gjør jeg dette? :)

Du har én tabell _kun_ med jobber og én tabell _kun_ med referanser. Så lager du en "join tabell" mellom de to som for hver rad kun inneholder ID-en til én jobb og én referanse.

 

Lag de tabellene og lim inn "show create table" her, så kan jeg svare.

Her er de tre relevante tabellene mine:

CREATE TABLE IF NOT EXISTS `Jobref` (
 `id` int(3) NOT NULL AUTO_INCREMENT,
 `job_id` int(3) NOT NULL,
 `ref_id` int(3) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

 

CREATE TABLE IF NOT EXISTS `Referanser` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `Fornavn` varchar(26) COLLATE utf8_unicode_ci NOT NULL,
 `Etternavn` varchar(25) COLLATE utf8_unicode_ci NOT NULL,
 `Bedrift` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
 `Stilling` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
 `Telefon` mediumint(20) NOT NULL,
 `E-post` text COLLATE utf8_unicode_ci NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

 

CREATE TABLE IF NOT EXISTS `Yrker` (
 `id` mediumint(4) NOT NULL AUTO_INCREMENT,
 `mndstart` tinyint(2) NOT NULL,
 `yearstart` year(4) NOT NULL,
 `mndslutt` tinyint(2) DEFAULT NULL,
 `yearslutt` year(4) DEFAULT NULL,
 `arbeidsplass` text COLLATE utf8_unicode_ci NOT NULL,
 `stilling` text COLLATE utf8_unicode_ci NOT NULL,
 `beskrivelse` text COLLATE utf8_unicode_ci,
 `WWW` text COLLATE utf8_unicode_ci,
 `Kategori` tinyint(1) NOT NULL,
 `Bruk` int(1) DEFAULT NULL,
 UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=63 ;

 

Tabellstrukturen min er tenkt slik:

Tabell 1:

Yrker, utdanninger, verv og kurs

 

Tabell 2:

IT-Kompetanse, Språk-kompetanse og sertifikater

Id, hva? kompetansegrad, type kompetanse

 

Tabell 3:

Referanse

Id, Fornavn, etternavn, Bedrift, Stilling, Telefon, Epost

 

Tabell 4:

Attest:

ID-Tabell1, tittel, PDF-fil

 

Tabell 5:

Jobref:

Id, jobid, refid

 

Tabell 6:

jobatt:

id, jobid, attestid

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...