Avatar billede dugi Nybegynder
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
Avatar billede hmortensen Nybegynder
28. januar 2006 - 11:41 #1
Prøv at beskriv tabellernes opbygning, hvad skal der joines på.
Avatar billede dugi Nybegynder
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? :)
Avatar billede dugi Nybegynder
28. januar 2006 - 13:57 #3
Jeg har prøvet at tegne en illustration, på hvordan det er jeg vil have det skal fungere:
http://www.efriend.dk/mysql_join_helpme.jpg

Håber det giver lidt mere forståelse :)
Avatar billede dugi Nybegynder
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
Avatar billede tjens Nybegynder
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.
Avatar billede tjens Nybegynder
28. januar 2006 - 16:17 #6
Hovsa, det var da vist Java objekt syntaks blandet med PHP variablenavne, men du forstår nok princippet ;-)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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

Seneste spørgsmål Seneste aktivitet
I går 21:00 Libre Office Impress Af Frank i Andre styresystemer
I går 11:47 VB script Af Jenshentze i Word
I går 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel