04. september 2003 - 12:57Der er
19 kommentarer og 1 løsning
Flere Svære Queries
Jeg har et forum
Forummet er indelt som følger
1. HovedEmner 2. Tråde i emnerne 3. Indlæg i trådene
Det jeg gerne vil er at udvælge det nyeste indlæg inden for hvert Hovedemne!
Tabelerne ser ud som følger:
CREATE TABLE ForumEmner ( EmneID int(5) NOT NULL auto_increment, EmneNavn varchar(250) NOT NULL default '', EmneBeskrivelse text NOT NULL, Billede varchar(250) NOT NULL default '', Flag int(2) NOT NULL default '0', PRIMARY KEY (EmneID) ) TYPE=MyISAM COMMENT='HovedEmner i forummet';
CREATE TABLE ForumTråde ( TrådID int(9) NOT NULL auto_increment, EmneID int(9) NOT NULL default '0', Overskrift varchar(250) NOT NULL default '', Indhold text NOT NULL, Skribent varchar(250) NOT NULL default '', Medlem int(1) NOT NULL default '0', DateTime datetime NOT NULL default '0000-00-00 00:00:00', IP varchar(250) NOT NULL default '', PRIMARY KEY (TrådID) ) TYPE=MyISAM COMMENT='Tråde i forummet';
CREATE TABLE ForumIndlæg ( IndlægID int(9) NOT NULL auto_increment, TrådID int(9) NOT NULL default '0', Overskrift varchar(250) NOT NULL default '', Indhold text NOT NULL, Skribent varchar(250) NOT NULL default '', Medlem int(1) NOT NULL default '0', DateTime datetime NOT NULL default '0000-00-00 00:00:00', IP varchar(250) NOT NULL default '', PRIMARY KEY (IndlægID) ) TYPE=MyISAM COMMENT='Forum Indlæg';
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.
select in.* from ForumIndlæg in, ForumTråde tr, ForumEmner em where em.EmneID = tr.TrådID and tr.TrådID = IndlægID order by in.DateTime desc limit 1,3;
det skulle meget gerne vise de 3 nyeste indlæg i hver emne
eller vist du vil se det lidt mere overskueligt select em.EmneNavn, tr.Overskrift, in.* from ForumIndlæg in, ForumTråde tr, ForumEmner em where em.EmneID = tr.TrådID and tr.TrådID = IndlægID order by in.DateTime desc limit 1,3;
select em.EmneNavn, tr.Overskrift, in.* from ForumIndlæg in, ForumTråde tr, ForumEmner em where em.EmneID = tr.TrådID and tr.TrådID = in.IndlægID order by in.DateTime desc limit 1,1;
ja sorry min fejl select in.* from ForumIndlæg in, ForumTråde tr, ForumEmner em where em.EmneID = tr.EmneID and tr.TrådID = in.TrådID order by in.DateTime desc limit 1,1;
med hensyn til limit 1,1 så skal det være 1 i følge mysql da den selv skriver: Please note that in versions prior to 4.1.0 this does not work with LIMIT 0, which is optimised to return instantly (resulting in a row count of 0)
select in.* from ForumIndlæg in, ForumTråde tr, ForumEmner em where em.EmneID = tr.EmneID and tr.TrådID = in.TrådID and em.EmneID = ($EmneRow[EmneID]) order by in.DateTime desc limit 1,1;
$EmneRow[EmneID] skal lige rettes til så det passer php syntaks
Du kan oså hive det hele ud i et hug, noget i den her stil select em.EmneID, in.* from ForumIndlæg in, ForumTråde tr, ForumEmner em where em.EmneID = tr.EmneID and tr.TrådID = in.TrådID and em.EmneID = (SELECT * FROM ForumEmner WHERE Flag = '0' ORDER BY EmneID ASC) order by in.DateTime desc limit 1,1;
Jeg leger lige lidt videre med det, og vender tilbage!
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.