24. juni 2008 - 17:21Der er
8 kommentarer og 1 løsning
Problem med at join to tabeler
Hej
Jeg et problem med at få to tabeler i min mysql database.
Her er min database:
specialekategorier: `id` int(10) unsigned NOT NULL auto_increment, `KategoriNavn` varchar(255) character set latin1 collate latin1_danish_ci NOT NULL, PRIMARY KEY (`id`)
(1, 'DIVERSE'), (2, 'IT'), (3, 'TEKNIK'),
specialer: `id` int(10) unsigned NOT NULL auto_increment, `BrugerID` int(10) unsigned NOT NULL, `BrugerNavn` text NOT NULL, `SpecialeKategoriID` int(10) unsigned NOT NULL, `SpecialeUnderKategoriID` int(10) unsigned NOT NULL, `Titel` varchar(255) character set latin1 collate latin1_danish_ci NOT NULL, `TeaserTekst` varchar(255) character set latin1 collate latin1_danish_ci default NULL, `DatoOprettet` datetime NOT NULL, `DatoAendret` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, `Slettet` bit(1) default NULL, PRIMARY KEY (`id`), KEY `BrugerID` (`BrugerID`), KEY `SpecialeKategoriID` (`SpecialeKategoriID`), KEY `SpecialeUnderKategoriID` (`SpecialeUnderKategoriID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
Og det jeg gerne ville er join SpecialeKategoriID med KategoriNavn, så man kan se kategori navnet. Fordi SpecialeKategoriID ligger i den tabel hvor man poster alt i.
Jeg har glemt at skrive at jeg skal bruge resulatet på en hjemmeside, så jeg skal bruge sk.KategoriNavn til at vise KategoriNavnet på hver enkle post. Dvs. at jeg bruger s.id til at hente indholdet og jeg skal bruge SpecialeKategoriID som referece til specialekategorier tabelen. På hjemmesiden vil jeg kunne vise KategoriNavnet.
I s.SpecialeKategoriID ligger det samme ID som i sk.id
omdøber du tabellen specialer til specialekategorier (svarer til FROM specialer AS specialekategorier)
Derfor "clasher" den med den efterfølgende delsætning INNER JOIN specialekategorier, hvilket giver dig den nævnte fejl.
Ref 25/06-2008 19:43:03
Det var også sådan jeg læste det. Min oprindelige sætning ville give dig netop det. Hvad var grunden til, at du ikke kunne bruge den?
Jeg havde givet tabellen specialer et alias på s (midlertidigt omdøbt tabellen til s) og tabellen specialekategorier havde jeg givet et alias på sk. Grunden skal alene søges i, at jeg er doven og ikke gider referere til feltnavnene med de lange tabelnavne.
Godt du fik det til at virke, men jeg kan nu ikke lade være med at være lidt skuffet over, at du tager alle point selv, når jeg kan se, at det er min sql-kode du bruger i den endelige kode. Ikke at jeg savner dine point, det er mere princippet i det.
Nej, nej, det er ikke nødvendigt. :-) Som sagt var det mere princippet, og når du har enkendt fejlen, er der ingen grund til at forfølge sagen yderligere.
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.