28. januar 2006 - 11:32
Der er
5 kommentarer og
1 løsning
Hjælp til JOIN af to tabeller
Hejsa,
Jeg har to tabeller: css_kommentarer / css_forum_posts.
Disse to tabeller er næsten identiske pånær to felter.
Jeg vil gerne have at disse to tabeller bliver slået sammen til én stor tabel, som jeg kan køre i gennem en løkke og sorter efter samme felt i begge tabeller.
I begge tabeller er et felt der hedder "activity" og det er det som den "samlede" tabel skal sorter ud fra.
Kan dette lade sig gøre?
Forstår i ikke mit spørgsmål, så sig til - så prøver jeg at forklare mig bedre :)
På forhånd tak.
Mvh
Morten
28. januar 2006 - 11:52
#2
CREATE TABLE `css_articles_comments` (
`id` int(255) NOT NULL auto_increment,
`articleid` int(255) NOT NULL default '0',
`commentid` int(255) NOT NULL default '0',
`replyid` int(255) NOT NULL default '0',
`comment` text NOT NULL,
`uniqueid` varchar(32) NOT NULL default '',
`ip` varchar(15) NOT NULL default '',
`date` int(2) NOT NULL default '0',
`month` int(2) NOT NULL default '0',
`year` int(4) NOT NULL default '0',
`time` varchar(5) NOT NULL default '',
`activity` int(255) NOT NULL default '0',
UNIQUE KEY `id` (`id`)
) AUTO_INCREMENT=1 ;
CREATE TABLE `css_forum_posts` (
`id` int(255) NOT NULL auto_increment,
`articleid` int(255) NOT NULL default '0',
`commentid` int(255) NOT NULL default '0',
`replyid` int(255) NOT NULL default '0',
`comment` text NOT NULL,
`uniqueid` varchar(32) NOT NULL default '',
`ip` varchar(15) NOT NULL default '',
`date` int(2) NOT NULL default '0',
`month` int(2) NOT NULL default '0',
`year` int(4) NOT NULL default '0',
`time` varchar(5) NOT NULL default '',
`activity` int(255) NOT NULL default '0',
UNIQUE KEY `id` (`id`)
) AUTO_INCREMENT=1 ;
Det er mine to tabeller - ved godt de er ens, men de bliver brugt i forskellige dele af systemet. Men det jeg gerne vil er at jeg vil slå de to tabeller sammen.
Når så hele tabellen er slået sammen, skal den sorter efter activity, så den henter de 10 seneste indlæg fra de tabeller i én og samme løkke.
Inputet i "activity" i begge tabeller er time(); og ud fra det skal den vise brugerens 10 seneste indlæg i kommentarer og forum - til sammen.
Kan du følge mig? :)
28. januar 2006 - 15:52
#4
Nå, jeg er blevet nød til at lave det om - har fået afvide det ikke kan lade sig gøre, så jeg lukker bare :s
28. januar 2006 - 16:14
#5
Må jeg foreslå en alternativ løsning, nu du poster i PHP forum:
Skriv et objekt, som kan
- udføre SQLen (med tabelnavn som inputparameter)
- returnere næste articleid (uden at læse videre)
- returnere en række (og læse videre)
Instantier objektet to gange med hver sin fil som parameter.
Så lave du bare det her i et loop med det antal rækker du skal bruge:
if (Forum.nextId() > Articles.nextId())
$row = Forum.returnRowAndAdvance();
else
$row = Articles.returnRowAndAdvance();
Skal forfines, hvis det skal håndtere når filerne evt. er tomme.
Evt. ved at objektet kan returnere en blank row.
28. januar 2006 - 16:17
#6
Hovsa, det var da vist Java objekt syntaks blandet med PHP variablenavne, men du forstår nok princippet ;-)