Hoi jongens, ik ben nu al 2 weken bezig met een SQL script.. Ik heb verschillende dingen al geprobeerd, maar niets wil echt lukken 
/me is op zoek naar een SQL expert
Ik ben bezig met een forum in php. Hij staat al bijna, maar met het overzicht klopt nog het een en ander niet...
Dit is mijn tabel tblForumMsg:
De topics en reacties staan allebei in deze tabel, de fora en boards in andere tabellen... Verder is er nog een usertabel.
Een bericht is een topic als MsgReplyTo NULL is, anders een reactie op het nummer wat het bevat.
Dit is nu de uitvoer:
jaja, het is een site voor kinderen

Mijn probleem:
Ik krijg het maar niet voor elkaar om een topic bovenaan te krijgen als het een nieuwe reaktie heeft. Ook lukt het niet om de datum te krijgen van de laatste reactie.
SQL:
($topic is de link naar de topic uit de tabel tblForumTopic, meegegeven in een querystring)
De fout is, is dat ik in mijn SQL-query WHERE MsgReplyTo IS NULL heb, en dus de reacties buitensluit. Ik zou niet weten hoe ik het anders kan doen...
De enige oplossing die ik zou kunnen bedenken is om alle berichten op vragen in de eerste string, en dan pas in de code uitvoer weergeven als MsgReplyTo NULL is. Dan nóg een query gebruiken om alle reacties op te tellen en de laatste reactie weer te geven.. Maar dat betekent dus dat ik per telkens 10/15 keer een query moet uitvoeren
Dit moet toch in één SQL-string te doen zijn?? Misschien iets in de richting van self-joins ofzow?
Graag wat help alsjeblieft, ik ben nog niet zo heel erg goed in joins
Bedankt!
/me is op zoek naar een SQL expert
Ik ben bezig met een forum in php. Hij staat al bijna, maar met het overzicht klopt nog het een en ander niet...
Dit is mijn tabel tblForumMsg:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| mysql> explain tblforummsg; +--------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+---------+----------------+ | MsgID | int(10) | | PRI | NULL | auto_increment | | MsgPoster | int(10) | YES | | NULL | | | MsgTitel | varchar(150) | YES | | NULL | | | MsgTekst | text | YES | | NULL | | | MsgDateTime | datetime | YES | | NULL | | | MsgBelongsTo | int(10) | YES | | NULL | | | MsgReplyTo | int(10) | YES | | NULL | | +--------------+--------------+------+-----+---------+----------------+ |
De topics en reacties staan allebei in deze tabel, de fora en boards in andere tabellen... Verder is er nog een usertabel.
Een bericht is een topic als MsgReplyTo NULL is, anders een reactie op het nummer wat het bevat.
Dit is nu de uitvoer:
jaja, het is een site voor kinderen

Mijn probleem:
Ik krijg het maar niet voor elkaar om een topic bovenaan te krijgen als het een nieuwe reaktie heeft. Ook lukt het niet om de datum te krijgen van de laatste reactie.
SQL:
code:
1
2
3
4
| SELECT tblForumMsg.MsgID, tblForumMsg.MsgTitel, tblForumMsg.MsgDatetime,tblForumUser.UserNickName FROM tblForumMsg INNER JOIN tblForumUser ON tblForumMsg.MsgPoster = tblForumUser.UserID WHERE MsgReplyTo IS NULL AND MsgBelongsTo=$topic; |
($topic is de link naar de topic uit de tabel tblForumTopic, meegegeven in een querystring)
De fout is, is dat ik in mijn SQL-query WHERE MsgReplyTo IS NULL heb, en dus de reacties buitensluit. Ik zou niet weten hoe ik het anders kan doen...
De enige oplossing die ik zou kunnen bedenken is om alle berichten op vragen in de eerste string, en dan pas in de code uitvoer weergeven als MsgReplyTo NULL is. Dan nóg een query gebruiken om alle reacties op te tellen en de laatste reactie weer te geven.. Maar dat betekent dus dat ik per telkens 10/15 keer een query moet uitvoeren
Dit moet toch in één SQL-string te doen zijn?? Misschien iets in de richting van self-joins ofzow?
Graag wat help alsjeblieft, ik ben nog niet zo heel erg goed in joins
Bedankt!